Datatypes, etc
Rust Playground
Writing Programs
Programs look a lot like any imperative language
Can't have mutable global variables (kind of)
Assignment is done with let statement, needn't provide types (static type inference)
Types must agree completely, conversions are explicit with as
Blocks must be bracketed. (Brackets and parens are kind of interchangeable)
Semicolon is statement separator; optional null statements and expressions (comma)
Last expression in block is value of that block
If statement is ternary expression
Fairly normal-looking while and for
match is switch equivalent
Rust Datatypes
Emphasis on safe, efficient, simple
Type system borrows heavily from all the other parametric/template type systems out there
"Borrow checker" tangled in with the type system statically checks lifetimes
Fundamental Datatypes
Unit type: ()
Boolean type: bool (true, false)
Integer types:
- i8, u8, i16, u16, i32, u32, i64, u64, i128, u128
- isize, usize
Floating types: f32, f64
Character type: char
- 32-bit Unicode code point
- Conversion-to implies checking:
from_u32
vsfrom_u32_unchecked
- Strings are UTF-8, so not chars
These types can be copied implicitly
Numeric literals can have type suffix e.g. 0u64
Tuples
Tuple types e.g. (u8,char,f64)
Fixed number of values of diverse type
(u64, f64, char)
with obvious value representation
let t = (12, 1.2, 'x');
Great for e.g. multiple return values, points
Copyable if elements are
Pattern-matching syntax
Accessible by dot-index