In an affine type system, resources can be used at most once.
Starting from a Hindley-Milner type system, it seems that a simple way to enforce affinity is to simply remove a variable from the current typing context whenever the typing rule for variables is used (as these slides on LinearML suggest, on page 15).
Is this all there is to enforcing affinity? Or is there anything more complex to do?