how would you implement https://doc.rust-lang.org/stable/std/pin/macro.pin.html without macros? a macro is used to shadow the original variable so that you can't move it (safely) after you pin it
fn pin(x: T) -> Pin<&mut T> { ... }
would move the valueI won't respond further.
> It would be perfectly possible to design a variant of Rust that gets you to 80-90% of Rust's usability, with the same safety, without macros.
i then present an api that i think relies on macros to expose a safe api
> Of course macros are good for encapsulation and abstraction, but that's a different subject.
no it's not. exposing safe abstractions is pretty much rust's raison d'être