Rust has two pointer-sized integer types: `isize` and `usize`. Their width matches the computer architecture rather than a fixed number of bits. `isize` is signed, so it can represent negative numbers; `usize` is unsigned, so it cannot. Both hold whole numbers, just like fixed-width types such as `i32` and `u8`. section 1.3
A practical use for `usize` is working with arrays. Rust uses it to index arrays, and an array length can be expressed as a `usize` const generic. That lets one struct definition work with different array lengths. section 16.1
struct Buffers<T, const N: usize> {
array_one: [T; N],
array_two: [T; N]
}
Here `N` is a `usize` length. Both arrays have length `N`, while `T` determines their element type. section 16.1

