sui_rust/ch01/
expr.rs

1#![allow(unused_variables)]
2//! 第一章:Rust语言基础
3//! 1.4 语法面面观(二):面向表达式(上)
4//!
5//!
6//!    
7
8/**
9
10    ### 面向表达式 (Expression-Oriented programming)
11
12    ```
13    use std::collections::HashMap;
14
15    fn add_one(i: &mut u32) {
16        *i += 1;
17    }
18
19    fn plus_one(i: &u32) -> u32 {
20        let i = i + 1;
21        i
22    }
23
24    fn main() {
25        let mut a = 41 ;
26        add_one(&mut a) ;
27        println!("{:?}", a) ;
28
29        let a = 41;
30        let b = plus_one(&a);
31        println!("{:?}", b) ;
32
33        let mut h = HashMap::new();
34        h.insert("anwser", 42);
35        println!("anwser is {:?}", h["anwser"]);
36    }
37    ```
38*/
39pub fn eop() {
40    println!("1.4 : Expression-Oriented programming");
41}
42
43/**
44
45    ### 分号表达式 vs 块表达式
46
47    1. 分号表达式返回值永远为自身的单元(Unit)类型:`()`
48    2. 分号表达式只有在块表达式最后一行才会进行求值,其他时候只作为「连接符」存在
49    3. 块表达式只对其最后一行表达式进行求值。
50
51    ```
52    fn main(){
53        ;
54        ;
55        {
56            ()
57        }
58        {
59            ();
60            use std::vec::Vec;
61        }
62        ();
63        &();
64        &{;}; // -> &()
65        ; // ->  ()
66    }
67    ```
68*/
69pub fn semi_and_block_expr() {
70    println!("1.4 : Semi vs Block ");
71}
72
73/**
74
75    ### FizzBuzz in match
76
77    ```
78    fn main() {
79        for i in 1..102 {
80            match (i%3, i%5) {
81                (0, 0) => println!("FizzBuzz"),
82                (0, _) => println!("Fizz"),
83                (_, 0) => println!("Buzz"),
84                (_, _) => println!("{}", i)
85            }
86        }
87    }
88    ```
89*/
90pub fn fizzbuzz_match() {
91    println!(" 1.4 : FizzBuzz in match ");
92}
93
94/**
95
96    ### FizzBuzz in if
97
98    ```
99    fn main() {
100        for i in 1..102 {
101            if i % 15 == 0 { println!("FizzBuzz") }
102            else if i % 3 == 0 { println!("Fizz") }
103            else if i % 5 == 0 { println!("Buzz") }
104            else { println!("{}", i) }
105        }
106    }
107
108    ```
109
110*/
111pub fn fizzbuzz_if() {
112    println!(" 1.4 : FizzBuzz in if ");
113}