1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-05-18 08:28:38 +02:00

44 lines
1.6 KiB
Markdown
Raw Normal View History

2022-12-21 16:36:30 +01:00
# Scalar Types
| | Types | Literals |
|------------------------|--------------------------------------------|-------------------------------|
| Signed integers | `i8`, `i16`, `i32`, `i64`, `i128`, `isize` | `-10`, `0`, `1_000`, `123i64` |
| Unsigned integers | `u8`, `u16`, `u32`, `u64`, `u128`, `usize` | `0`, `123`, `10u16` |
| Floating point numbers | `f32`, `f64` | `3.14`, `-10.0e20`, `2f32` |
| Strings | `&str` | `"foo"`, `"two\nlines"` |
2022-12-21 16:36:30 +01:00
| Unicode scalar values | `char` | `'a'`, `'α'`, `'∞'` |
| Booleans | `bool` | `true`, `false` |
The types have widths as follows:
2022-12-26 19:35:09 -08:00
* `iN`, `uN`, and `fN` are _N_ bits wide,
2022-12-21 16:36:30 +01:00
* `isize` and `usize` are the width of a pointer,
* `char` is 32 bit wide,
* `bool` is 8 bit wide.
<details>
There are a few syntaxes which are not shown above:
- Raw strings allow you to create a `&str` value with escapes disabled: `r"\n"
== "\\\\n"`. You can embed double-quotes by using an equal amount of `#` on
either side of the quotes:
```rust,editable
fn main() {
println!(r#"<a href="link.html">link</a>"#);
println!("<a href=\"link.html\">link</a>");
}
```
- Byte strings allow you to create a `&[u8]` value directly:
```rust,editable
fn main() {
println!("{:?}", b"abc");
println!("{:?}", &[97, 98, 99]);
}
```
</details>