hello world & rust相关工具使用
- hello world
- rustc
- rustc --version
- complie .rs program
- main()
- entry point
- all blocks wrapped by { }
- cargo
- cargo is a package manager for rust
- cmd
- cargo --version
- cargo new proj-name
- create a new rust project
- cargo.toml
- name version edition
- dependencies
- cargo build
- -release
- 模式是调试构建,会将可执行文件放在 debug 目录下
- cargo run
- compile & run
- cargo check
- 在不生成二进制文件的情况下构建项目来检查错误
- rustc
- guessing game
- 关联函数 === 类的静态方法
- crate
- rust lib
- 包含.rs文件,但不能执行
common concepts
-
match 表达式
- 是js中switch的健身版,提供更加强健的安全,并且不用break
- match里的case支持接受condtion
let guess: i32 = match guess.trim().parse() { Ok(num) => num, Err(_) => continue };
-
shadowing
- rust允许重复创建同名变量
- 重复使用let
-
变量
- let 生命默认是不可变
- let mut 声明变量
- const 声明全局作用域有效的常量
-
expression-based
fn main() { let y = { let x = 3; x + 1 }; println!("The value of y is: {y}"); }
- 表达式会返回值,语句不会,即使没有显示的return语句
- 上面match的 Ok(num) ⇒ num 也是这个道理
- 最后一个表达式默认就是这个block的返回值,如果加上来分号,那就是语句了
- 这一块反而有点像js的arrow function: const a = () ⇒ 1
- 如果加上分号的话,也可以用 return 来显示的返回
- 表达式会返回值,语句不会,即使没有显示的return语句
-
注释
- 简单注释
- 文档注释
-
使用if来赋值
- let x = if condition { 1 } else
-
循环
- keyword: loop
- 循环标签,多重嵌套循环可以给break 加上标签来表明需要跳出哪一个循环
-
while 循环
- 可以用loop+if+break实现相同功能
-
for循环
- 用于遍历数组、map等
-
small task:打印fibonacci数列
fn main() {
let num_n = get_n_fibonacci(13);
println!("fibonacci num n = {num_n}")
}
fn get_n_fibonacci(n: u32) -> u32 {
let mut index = n - 1;
let mut num1 = 0;
let mut num2 = 1;
while index > 0 {
index -= 1;
let new_num = num1 + num2;
num1 = num2;
num2 = new_num;
}
return num1;
}
标签:cargo,笔记,num,let,match,new,程序设计,rust
From: https://www.cnblogs.com/azoux/p/17825737.html