Rust uses a similar (but significantly weaker) system called "affine types" underlying its borrow checker.
How might that look if you tried to do this in, say a (not compatible with C) C-like language? I thought the ownership system (affine types) was required for the borrow checker to work.
Just curious, could you expand on this? What makes it weaker? Is it that affine types allow either consuming or not consuming a type?
https://play.rust-lang.org/?gist=b875377faa6e22b74ba8661ee10...
That little DSL lets you make multi-layer burgers, but only where bacon and patties alternate, and there is a bun on the top.