To clarify, with affine types you can guarantee that a value is used at most once, while linear types enforce that a value is used exactly once. Rust has the must-use directive that can be used to approximate linear types but it has severe limitations.
http://home.pipeline.com/~hbaker1/LinearLisp.html
http://home.pipeline.com/~hbaker1/LFrpoly.html
http://home.pipeline.com/~hbaker1/LBoyer.html
http://home.pipeline.com/~hbaker1/LQsort.html
http://home.pipeline.com/~hbaker1/ForthStack.html
http://home.pipeline.com/~hbaker1/Use1Var.html