fnbox
The tracking issue for this feature is #28796
This had been a temporary alternative to the following impls:
impl<A, F> FnOnce for Box<F> where F: FnOnce<A> + ?Sized {}
impl<A, F> FnMut for Box<F> where F: FnMut<A> + ?Sized {}
impl<A, F> Fn for Box<F> where F: Fn<A> + ?Sized {}
The impls are parallel to these (relatively old) impls:
impl<A, F> FnOnce for &mut F where F: FnMut<A> + ?Sized {}
impl<A, F> FnMut for &mut F where F: FnMut<A> + ?Sized {}
impl<A, F> Fn for &mut F where F: Fn<A> + ?Sized {}
impl<A, F> FnOnce for &F where F: Fn<A> + ?Sized {}
impl<A, F> FnMut for &F where F: Fn<A> + ?Sized {}
impl<A, F> Fn for &F where F: Fn<A> + ?Sized {}
Before the introduction of unsized_locals, we had been unable to provide the former impls. That means, unlike &dyn Fn() or &mut dyn FnMut() we could not use Box<dyn FnOnce()> at that time.
FnBox() is an alternative approach to Box<dyn FnBox()> is delegated to FnBox::call_box which doesn't need unsized locals. As we now have Box<dyn FnOnce()> working, the fnbox feature is going to be removed.