Why is there one `Atomic*` type for many primitive type instead of a generic `Atomic<T>`? : <p>Looking at <a href="https://doc.rust-lang.org/stable/std/sync/atomic/index.html" rel="noreferrer">the <code>std::sync::atomic</code> module</a>, one can see a bunch of different <code>Atomic*</code> types, like <code>AtomicU32</code>, <code>AtomicI16</code> and more. Why is that?</p>

<p>Rust has generics and – as I see it – it would be possible to add a generic <code>Atomic&lt;T&gt;</code> where <code>T</code> is bounded by some trait defined in the module (in Java-ish naming: <code>Atomicable</code>). That trait would be implemented by the types that could be handled in an atomic fashion and users could just use <code>Atomic&lt;u32&gt;</code> instead of <code>AtomicU32</code>.</p>

<p><strong>Why isn't there a generic <code>Atomic&lt;T&gt;</code>? Why have a bunch of different types instead?</strong></p>
