Provides a handle for a Box<T> that is Clone+Send+Sync, allowing at most 1 thread to consume the inner value.
This allows you to move things between threads that aren't normally allowed, by ensuring that only 1 thread has access to the internal value via an atomically swapped pointer.
In addition to the base OneCopy wrapper that allows the inner value to only be consumed once, OneCopyCanReplace allows the inner value to be replaced with another, like a (probably) safe multithreaded version of std::cell::Cell.
Do NOT use a real std::cell::Cell though, especially not behind Rc; this library uses unsafe and allows such things to compile, but threads can definitely race and cause memory corruption. It should be safe to move a Rc for which there are no other references however. See the rc_share test for an example of code that can produce a crash and should be avoided.