for variables:
let x = FooBar::new();
let y: JoinGuard<x> = thread.join_guard(); // or something idk
// trying to leave the scope either requires the guard to drop or errors
// I'm not sure if this is sound. but it's not the use-case I originally had in mind (see below)
for fields:
fn bar<let v>(x: Idk) {
v.push(x)
}
struct Foo {
x: Vec<Idk>,
y: Controller<bar::<Self::x>>
}
// elsewhere
foo.y.push(idk) // --> foo.x.push(idk), through bar
(they’re basically the same basic concept, just applied differently. do you think we can do monomorphization with what’s basically closures?)