As of the time of writing, there are four atomic types in the standard library under the std::sync::atomic module: AtomicBool, AtomicIsize, AtomicUsize, and AtomicPtr. Each one of them represents a primitive type, namely bool, isize, usize, and *mut. We are not going to look at the last, which, being a pointer, you will probably only have to deal with when interfacing with programs written in other languages anyways.
In case you haven't encountered isize and usize before, they are representations of the smallest amount of bytes needed to address any part of the memory of your machine. On 32-bit targets this is 4 bytes, while 64-bit systems will need 8 bytes. isize uses those bytes to represent a signed number, as in an integer that can be negative. usize instead represents an unsigned number, which can only be positive but has a lot more capacity for huge numbers in that direction. They are usually used when dealing with collections capacities. For example, Vec...