The "crossbeam-channel" crate uses atomic operations on pointers, with unsafe code. Unsafe lock-free code is not a good thing to find, and might be brittle across platforms. It looks like that code required a lot of debugging.
Should there be language support to allow atomic operations on any type which fits within the atomic limits of the platform? That would simplify this sort of thing. The compiler knows what operations the CPU can do, but crates do not.
That creates a portability problem, of course. Some CPUs can lock 4 bytes, some 8 bytes, some even 32 bytes if it doesn't cross a cache line boundary. Is there any Rust-supported CPU that can't lock "usize" and pointer sizes? If not, it's worth considering offering generic atomic up to that size.
Maybe have an "Atomic" trait for structs, which will force any needed alignment and will fail to compile if the struct is bigger than the maximum size for which the hardware has atomic operations.