Rust 编程零基础学习+实战(1)

Rust基础语句

let

手册中关于let的介绍let - Rust

值得注意的有以下几点:

  • 声明的变量默认无法移动(immutable),可使用mut关键字更改为mutable
  • shadowing问题,可重复定义相同名字的变量,定义的类型可以不一样,最后定义的变量会shadow前面的同名变量。前面的变量并不会消失,在scope结束后会自动drop。

可以和if联用,if let语句,结合Optional,可用于模式匹配(pattern match)。类似用法还有while let。

if let Some(a) = b {

}
else {

}

基本数据类型

rust book对数据类型的介绍在这里Data Types - The Rust Programming Language

整数,浮点数,布尔,字符等

由基本数据类型可以组合成为以下类型

tuple,struct,array,enums

函数

函数可以用return返回结果,也可以在没有return时返回函数中最后一句(必须是表达式)的值。第二条适用于任何一个scope。

Rust不允许null指针相关,应使用option

Option

类似于C++中的optional类模板,需要null指针时应使用option

option相关介绍std::option - Rust,示例如下

fn divide(numerator: f64, denominator: f64) -> Option<f64> {
    if denominator == 0.0 {
        None
    } else {
        Some(numerator / denominator)
    }
}

// The return value of the function is an option
let result = divide(2.0, 3.0);

// Pattern match to retrieve the value
match result {
    // The division was valid
    Some(x) => println!("Result: {x}"),
    // The division was invalid
    None    => println!("Cannot divide by 0"),
}

 循环

除for和while外,rust还使用loop关键字,loop循环可以在break时返回值,loop - Rust中的示例如下

let mut i = 1;
let something = loop {
    i *= 2;
    if i > 100 {
        break i;
    }
};
assert_eq!(something, 128);

标准输入输出

获取命令行参数,见args in std::env - Rust

use std::env;

// Prints each argument on a separate line
for argument in env::args() {
    println!("{argument}");
}

 获取输入,见Stdin in std::io - Rust

use std::io;

fn main() {
    let pattern_string = std::env::args()
        .nth(1)  //第一个参数
        .expect("missing required command-line argument: <pattern>"); //报错

    let pattern = &pattern_string;

    let mut input = String::new(); //buffer
    loop {
        match io::stdin().read_line(&mut input) {
            Ok(n) => {
                if n == 2 || n == 0 {
                  break;
                } //n为输入长度
                  //空白行或eof则跳出loop
            }
            Err(error) => println!("error: {error}")
        }
        input.clear(); //清空buffer
    }
}

其他问题

match关键字

字符串String与字符数组str转换

所有权问题(重点,待学习)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值