Rust 基本语法
2022-03-05 11:37:48

Rust 基本语法

Rust的语法与C++类似,是一门自由度比较高的语言。

变量

在Rust中,创建变量的形式像这样

let s: String = String::new();

其中let为创建变量的关键字,s为变量名,String则为变量类型,String::new()则是变量的值。

自动推导

Rust优秀的编译器可以自动推导出大部分的数据类型,于是就可以省略掉变量类型。

let s = String::new();

可变类型

默认创建的变量都为不可变变量,不可以再重新赋值或者更改。要创建一个可变变量,可以使用mut关键字。

let mut s = String::new();

变量遮盖

变量遮盖可以使用已有的变量名来重新创建一个变量。

let mut s = String::new();
let s = "Rust";

当后面再进行使用时,s就变成了一个值为Rust的不可变变量,而原始的可变变量s被遮盖。

函数

Rust作为一门同时拥有面向过程和面向对象形式的语言,在函数上提供了非常多的语法糖。

入口函数

main函数是大部分语言中的入口函数。

fn main() {
    // code
}

Rust中的main函数不带参数,并使用fn关键字进行声明。

返回值

main函数是可以有返回值的。

fn main() -> ReturnType {
    return ReturnType;
}

使用->操作符来声明一个返回值的类型,与大部分语言相同,可以使用return关键字来结束方法并返回一个值。也可以省略掉return关键字,像这样:

fn main() -> usize {
    123
}

在省略return关键字的同时,也要去掉结尾的;,这样编译器就会把这一行表达式作为当前作用域的返回值来进行处理。

参数

参数可以为函数作用域提供一个外来值。在Rust的所有权概念下,传入函数的引用会将所有权转移至函数内部,并在函数结束后被释放。

fn words(words: String) -> String{
    words
}

作用域

Rust允许以代码块的形式申明作用域。我们可以手动声明一块作用域,当作用域中的代码执行完毕时,其中的所有引用都会被清除。

fn main(){
    let mut s = String::new();
    {
        let s = "Rust"; // Shadowing
        println!("{}",s);     
    }
    s.push_str("Hello");
    println!("{}",s);
} 

作用域是可以有返回值的,与函数一样,会将最后一句表达式的值返回。我们可以像声明变量那样来接收这个返回值。注意,当最后一句不是表达式时,默认返回的是一个空的元组。

fn main(){
    let s = {   //  s == Rust
        "Rust"
    };
    let tup = { // tup == ()
        "Rust";
    };
}
Prev
2022-03-05 11:37:48