Once we have either super_let or pin_ergonomics, we will be able to have APIs like this:
let foo = stack_init_pin!(bar);
instead of
stack_init_pin!(let foo = bar);
For super let, it's easy to implement, we just use super let to create the place.
For pin_ergonomics, we can implement a type that does initialization on deref_mut (which works with lifetime extension) and then use &pin mut *init_on_deref_mut to create the Pin<&mut T> that we want.
Once we have either
super_letorpin_ergonomics, we will be able to have APIs like this:instead of
For super let, it's easy to implement, we just use
super letto create the place.For
pin_ergonomics, we can implement a type that does initialization onderef_mut(which works with lifetime extension) and then use&pin mut *init_on_deref_mutto create thePin<&mut T>that we want.