Easiest is usually to define `=copy` as `.error`, provide a destructor that doesn't forget to check for `x.res != nil` (the "was moved from?" check) and let the compiler use its own notion of `=sink`.
We might want to tweak the spec that if you only overwrite `=destroy` that then `=copy` is an error -- it almost never does the correct thing.