Нет описания

main.rs 1.8KB

    /// `inc` is a function that increments it's argument, except if the /// argument is 42. /// /// # Arguments /// /// * `x` - The number to increment /// /// # Examples /// /// ```rust /// inc(3) == 4 /// inc(42) == 42 /// inc(99) == 100 /// ``` fn inc(x: i32) -> i32 { if x == 42 { return 42 } x + 1 } struct Point { x: i32, y: i32 } struct Meters(i32); #[derive(Debug)] enum Number { Integer(i32), Float(f32), NaN } fn print_num_type(num: Number) { println!("{}", match num { Number::Integer(_) => "integer", Number::Float(_) => "float", Number::NaN => "not a number" }) } fn main() { let x = 5; // x: i32 println!("Hello, World!"); if x == 42 { // 42 is important println!("It's THE ANSWER!"); } else { println!("Meh, it's just a number, {}.", x); } // let's call some functions let n = 10; println!("inc({}) = {}", n, inc(n)); println!("inc(42) = {}", inc(42)); println!("inc(43) = {}", inc(43)); // tuples let ns = (3, 4); println!("x, y = {}, {}", ns.0, ns.1); let (x, y) = ns; println!("x, y = {}, {}", x, y); if ns == (4, 5) { println!("All the rules are different!"); } else { println!("The universe is basically ok."); } // structs let p = Point{x: 1, y: 2}; println!("Meet you at ({}, {}).", p.x, p.y); let Meters(l) = Meters(3); println!("It's {}m until there, too long for me. Bye.", l); // enums let i: Number = Number::Integer(3); let f: Number = Number::Float(3.1415); let n: Number = Number::NaN; println!("Here are some numbers: {:?}, {:?} and {:?}", i, f, n); // match print_num_type(i); print_num_type(f); print_num_type(n); // loops for x in 0..10 { println!("{}", x); } }