Літерали та оператори
Цілі числа 1, числа з плаваючою комою 1.2, символи 'a', рядки "abc", логічні значення true
і одиничний тип () можуть бути виражені за допомогою літералів.
Цілі числа, альтернативно, можуть бути виражені у шістнадцятковому, вісімковому або двійковому
записі з використанням таких префіксів відповідно: 0x, 0o або 0b.
Підкреслення можна вставляти в числові літерали для покращення читабельності, напр.
1_000 — це те саме, що 1000, а 0.000_001 — це те саме, що 0.000001.
Rust також підтримує науковий E-запис, напр. 1e6, 7.6e-4. Відповідний
тип — f64.
Нам потрібно повідомити компілятору тип літералів, які ми використовуємо. Поки що
ми будемо використовувати суфікс u32, щоб позначити, що літерал — це беззнакове 32-бітне
ціле число, і суфікс i32, щоб позначити, що це знакове 32-бітне ціле число.
Доступні оператори та їхня пріоритетність у Rust схожі на інші мови, схожі на C.
fn main() {
// Додавання цілих чисел
println!("1 + 2 = {}", 1u32 + 2);
// Віднімання цілих чисел
println!("1 - 2 = {}", 1i32 - 2);
// TODO ^ Спробуйте змінити `1i32` на `1u32`, щоб побачити, чому тип важливий
// Науковий запис
println!("1e4 is {}, -2.5e-3 is {}", 1e4, -2.5e-3);
// Булева логіка з коротким замиканням
println!("true AND false is {}", true && false);
println!("true OR false is {}", true || false);
println!("NOT true is {}", !true);
// Побітові операції
println!("0011 AND 0101 is {:04b}", 0b0011u32 & 0b0101);
println!("0011 OR 0101 is {:04b}", 0b0011u32 | 0b0101);
println!("0011 XOR 0101 is {:04b}", 0b0011u32 ^ 0b0101);
println!("1 << 5 is {}", 1u32 << 5);
println!("0x80 >> 2 is 0x{:x}", 0x80u32 >> 2);
// Використовуйте підкреслення, щоб покращити читабельність!
println!("One million is written as {}", 1_000_000u32);
}