Simplest part of [[Crab]], simply a collection of alias for number types to reduce ambiguity on primitive types. | **Type** | **Underlying Type** | When you should use | | ------------ | ---------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | *usize* | `unsigned long long` / `size_t` | Whenever you have a number that should *never* be negative or are storing the length or count of something, <br>*eg.* `for (usize i = 0; i < array.length(); i++)`. | | *u64* | `unsigned long long` / `uint64_t` | Not much use over *usize*, unless you are trying to do something like store the hash of something (tldr: use *usize*). | | *u32* | `unsigned int` / `uint32_t` | ^ | | *u16* | `unsigned short int` / `uint16_t` | ^ | | *u8* | `unsigned char` / `uint8_t` | Use whenever you are trying to refer to raw data / an array of raw bytes. If you are referring to a *String*, just use the `String`/`std::string` class, or if you *really* need to use a c-style string, use `const char*`. | | *i64* | `long long`/`signed long long`/`int64_t` | | | *i32* | `int`/`signed int`/`int32_t` | | | *i16* | `short int`/`signed short int`/`int16_t` | | | *i8* | `signed char`/`int32_t` | | | *String* | `std::string` | | | *Vec\<T>* | `std::vector<T>` | | | *StringView* | `std::string_view` | |