特征:
就目前我学习到的rust知识来看,我认为rust有以下几个特征:
- 链式调用
- 表达式
- 强类型
use
使用use导入包,我觉得rust的导包和python的很像
main
main函数是rust可执行程序最先执行的代码,可以说是程序的入口,在golang中也是,我学过的语言好像都是这样
这个println好像不是函数,因为加了 ‘ ! ’听说是叫宏的一个东西,目前还不知道,后续应该会学习到
fn main(){
println!("hello rust");
}
let
let是rust给变量赋值?看了rust圣经,准确来说好像应该是绑定,rust中的变量存在两个概念
可变变量,不可变变量
可变变量: let mut guess = String::new();
mut是声明其为可变
不可变:同理就是少个mut
区别:不可变变量除了声明的时候能够绑定值,其余时刻不能,可变变量则可以
rust中的输入输出
需要导入包std::io,没导入调用io时候要加入std::
io::stdin().read_line(&mut guess).
expect("error happend");
expect
expect是rust中的一个错误处理
read_line()会返回一个io::Result,这是一个枚举enum类型,返回ok或者err,expect就是为了捕获错误,如果返回ok则执行接下来的代码,类似panic,会直接结束进程
match
有点像golang以及其他语言的switch,可以对枚举值进行switch,比如上面的错误处理就可以用match进行更加优雅的处理,毕竟直接panic有点不够健壮
这是最后代码的截断,类似这种处理,这里的=> 有点类似golang中switch的 : ?
let guess:u32 = match guess.trim().parse(){
Ok(num) => num,
Err(_) => {
println!("error happen");
continue;
},
};
cmp
cmp是变量的一个方法,可以直接调用,但是比较的话要用相同类型,emmm
rust中的变量类型有点迷,是真的会变,值会变,类型也会变,好智能
cmp可能需要导入这个包std::cmp::Ordering,Ordering也是个枚举类型包含大于小于等于,用于match的时候使用
loop
循环,目前还没有深入学习 文章来源:https://www.toymoban.com/news/detail-701469.html
例子
下面是一个例子:猜数字文章来源地址https://www.toymoban.com/news/detail-701469.html
use rand::Rng;#用于生成随机数
use std::io;
use std::cmp::Ordering;
fn main() {
println!("Hello, world!");
let secret_number = rand::thread_rng().
gen_range(1, 101);
println!("secret_number is:{}",secret_number);
loop {
let mut guess = String::new();// 将guess绑定一个字符串变量
println!("input a number:");
io::stdin().read_line(&mut guess).// 输入数字
expect("error happend");
println!("the guess number is:{}",guess);
let guess:u32 = match guess.trim().parse(){// 将guess的值转化为整型重新绑定
Ok(num) => num,
Err(_) => {
println!("error happen");
continue;
},
};
// expect("parse error:type u32");
match guess.cmp(&secret_number){// 前面说的match cmp
Ordering::Less => println!("To small"),
Ordering::Greater => println!("To large"),
Ordering::Equal =>{
println!("success");
break;
},
}
}
}
到了这里,关于Jabbi的Rust学习日记(二)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!