美文网首页程序员
Rust简明学习手册 - Rust安装和基本概念

Rust简明学习手册 - Rust安装和基本概念

作者: handyTOOL | 来源:发表于2022-11-25 11:01 被阅读0次

    前言

    好久没学新语言了,最近打算学学Rust并记录一下Rust的要点,方便后期给自己参考。

    快速安装

    Macos | Linux

    curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh
    

    Windows

    安装包下载地址

    Visual Studio Code 插件

    搜索安装rust-analyzer即可

    快速创建rust项目

    cargo new 项目名称
    

    项目结构如下

    项目根目录
        - src
            - main.rs
        Cargo.toml
    

    src下是源代码,Cargo.toml配置了项目的依赖,版本号等信息,cargo是rust的包管理工具

    运行rust代码

    通过Cargo创建的项目可以直接在项目根目录下运行

    cargo run
    

    如果单独建立一个rust源码文件,则可以使用rustc编译,然后手动执行编译产物

    rustc app.rs && ./app
    

    变量

    定义

    let int_var = 222;
    int_var = 100; // error!
    

    直接使用let定义时,变量不可被更改,增加mut才可以修改

    let mut int_var = 222;
    int_var = 100; // ok
    

    作用域

    变量只在当前作用域生效,作用域的定义类似于C,比如函数,控制语句的Body。当前作用域定义的同名变量可以覆盖父作用域的相应变量。

    fn function() {
        let int_var = 100; // 只在函数内部生效
        if true {
            let int_var = 20;
            // 这里访问到的int_var则是20
        }
    }
    

    常量

    const THIS_IS_A_CONST: i64 = 10 * 200;
    

    常量需要明确指定类型,由const修饰,赋值表达式只能是编译时可计算出结果的。

    方法

    定义

    fn function_name(param1: Type, param2: Type) -> ReturnType {
        return xxx;
        // or
        xxx
    }
    

    由关键字fn开头,参数列表由逗号隔开,参数名在前,类型追加在冒号后面,返回值类型在->符号后拼接。返回值可以使用return返回,也可以不写return,但是注意分号也要去掉。

    调用

    分为两种调用方式,类似于其他语言的类方法和实例方法,具体会在介绍mod时详细展开

    xxx::classFunc()
    xxx.instancFunc()
    

    数据类型

    种类

    • 整型:分为iXX和uXX系列,XX支持8,16,32,64,128,直接十六进制(0x),八进制(0o),二进制(0b),Byte(b'A')。默认i32
    • 浮点型:f32和f64,默认f64
    • 布尔值:bool,true或者false
    • 字符:char,支持多字节字符,包括表情
    • tuple:元组,例如 let tup: (i32, f64, u8) = (500, 6.4, 1);
    • 数组:let arr = [1, 2, 3, 4, 5];

    虽然rust是强类型语言,但如果编译器能推导出来类型,我们定义变量时都可以忽略类型,这个和目前很多现代语言类似

    let int_var = 222; // 这里不用写i32
    let int_var = xxx::funcReturnInt32Var(); // 这里不用写i32
    

    注释

    单行

    // hello, world
    

    多行

    文档上没有说这种注释方式,但是我试了一下的确可以

    /*
    Name:func
    Param: arg1
    */
    

    流程控制语句

    if

    // 常规的if else
    if a < 5 {
    
    } else if b == 6 {
    
    } else {
    
    }
    
    // 对标三目操作符
    let a = if b==0 {someval} else {otherval};
    

    loop

    loop {
        // 永远运行
    }
    

    loop的break不仅退出循环,还可以返回一个值

    let val = loop {
        ...
        break some_val;
    }
    

    while

    和其他语言的while类似

    while a < 5 {
        ...
        break;
    }
    

    for

    和其他语言的for类似,对数组或者其他可迭代的对象进行元素遍历

    for item in arr {
    
    }
    

    相关文章

      网友评论

        本文标题:Rust简明学习手册 - Rust安装和基本概念

        本文链接:https://www.haomeiwen.com/subject/zfuffdtx.html