Rust基础
   笔记Rust基础    0 comment
Rust基础
   笔记Rust基础    0 comment

Rust基础

1.使用cargo创建项目


    1).cargo new 项目名

    2).cargo build编译原文件

    3).cargo run 执行两步操作:编译+运行编译结果
    当项目已经编译过并且未发生改变时,rust将直接执行之前编译后的二进制文件

    4).cargo check比build块,可在开发过程中多次使用,提高开发速度

2.外部库(在rust中称为crate)


    要安装外部crate,直接在Cargo.toml中的dependency中添加,等待插件自动拉取,或在下次编译时会拉取

    Eg.

    [dependencies]

    rand = "0.7.3"

3.变量和可变性


    变量:
    rust使用let声明变量,声明变量时添加mut(mutable)关键字,标识该变量为可变变量,否则则为immutable,不可变变量。

    修改不可变的变量将报错:cannot assign twice to immutable variable

    常量:
    1.使用const定义,常量不可变,不存在mut的概念,
    2.且常量定义数据的类型必须标注
    3.常量可以在任何作用域内声明
    4.常量只可以绑定到常量表达式,无法绑定到函数的调用结果,或只能在运行时计算出的结果
    5.命名规范,全部使用大写字母,单词间使用下划线标注。

    shadow的概念,声明变量时可以多次声明,这样后声明的变量会shadow(隐藏)前面的变量,const声明的变量只能被定义一次。

4.数据类型

rust是静态语言,在编译时,必须要知道数据的类型。主要研究两个数据类型子集:标量和复合。


    标量类型:标量类型表示单个值。
        1.整数类型
            没有小数部分,根据位数长度和符号标记,通常分为i8,i16,i32,i64,i128,u8...
        2.浮点类型
            带小数点的数字。Rust 的浮点类型是f32和f64,它们的大小分别为 32 位和 64 位。默认类型是f64 因为在现代 CPU 上,它的速度与f32大致相同,但精度更高。所有浮点类型都是有符号的。
        3.布尔
            true和false。布尔值的大小为一个字节。Rust 中的布尔类型使用bool
        4.字符
            Rust 的char类型是该语言最原始的字母类型

    复合类型:可以将多个值组合成一种类型。Rust 有两种原始复合类型:元组和数组。
        1.元组
            元组是将多个具有多种类型的值组合成一个复合类型的通用方法。元组具有固定长度:一旦声明,它们的大小就不能增加或缩小。
            fn main() {
                let tup: (i32, f64, u8) = (500, 6.4, 1);
            }
            访问元组中的数据:
                println!("tup one is {}" ,tup.0);

                //元组可以结构
                let (x,y,z) = tup;

                println!("{x},{y},{z}")
        2.数组
            数组的每个元素都必须具有相同的类型。与某些其他语言中的数组不同,Rust 中的数组具有固定长度。

               let arr:[i32;3] = [123,45,78];

                println!("arr one is {}",arr[0]);

            当访问超出数组末尾的数组元素,程序进入panic,阻止访问无效的内存,体现了rust的安全性。

5.函数

    fn main() {
        println!("this is main fn");
        another_function(15,'g');
    }
    //函数使用snake_case命名法,必须使用小写单词间使用_分隔
    //函数的参数,必须标明类型,多个参数间使用逗号分隔
    fn another_function(x:i32,y:char){
        println!("this is a defined fn----{x}---{y}")
    }

    语句和表达式:
        1.语句是执行某些操作但不返回值的指令。
        2.表达式计算结果值。
        fn main() {
            let y = {
                let x = 3;
                x + 1
        };
        println!("The value of y is: {y}");

        该x + 1行末尾没有分号,这与您目前看到的大多数行不同。表达式不包括结束分号。如果你在表达式的末尾添加分号,你就把它变成了一个语句,然后它就不会返回值

}

6.控制流(循环)

    if else
    while
    loop
    for
        let arr:[i32;5] =[1,25,48,59,41];
            for e in arr.iter() {
                println!("{e}");
        }
The article has been posted for too long and comments have been automatically closed.