Java程序员的Rust学习笔记(持续维护中)

本文为Java程序员视角,用Rust列举出最常用的一些操作,作为记录。作为有Java经验的程序员,应该对项目、src、main这些都耳熟能详,看到关键字自己试一下,那么就都很明显了,所有这里内容都不细说。

强调:这里是个人笔记,不是教学篇。

强调:细节不提的意思是,自个儿如果感兴趣,就深入试一下。

代码块中没有Rust选项,将就着看吧。

参考文献:Rust程序设计语言

1.安装

https://blog.csdn.net/nietzsche0/article/details/112560716

2.创建项目

命令行下,任意目录

cargo new [项目名]

3.HelloWorld

cargo会自动创建一个HelloWorld代码,在src目录下,main.rs。

fn main() {
    println!("Hello, world!");
}

4.构建并运行

cd [项目名]

cargo run

 5.包引入(Java import)

use std::io;

 调用包的方法

io::stdin().read_line(&mut guess).expect("Failed to read line");

 &mut guess为其他参数,之后再解释,这里知道引入和调用就行了。

同时,和Java一样,也可以直接写成这样,后面直接跟方法调用。

std::io::stdin

6.创建变量

let foo = 5; // immutable
let mut bar = 5; // mutable

开始和Java不一样了,mut代表可变,没有let表示默认不可变。

 创建一个String,如下。和上述代码相映,就是创建了一个String类型的变量。

let mut guess = String::new();

这里有一点细节概念,但是这里不提,这里的guess正好就是第5节中的参数。

顺便这里说明,&指引用,具体细节暂时不提,因为第5节代码是为了接收一个控制台输入值,是可变的,所以加上mut。

其他细节暂时不说,到时候可能和第1节一样,在这里补一份链接。

7.异常处理

和Java一样,io包下的操作,定义了不少异常,Rust中有一个类型是Result,和Java的区别是,Result是枚举。

其他细节暂时不说,到时候可能和第1节一样,在这里补一份链接。

8.打印格式

println!("You guessed: {}", guess);

通过大括号进行占位。

let x = 5;
let y = 10;
println!("x = {} and y = {}", x, y);

9.扩展包

回到第2节的步骤,这里说明一下,rust中rustc类似javac,而cargo则类似Maven、Gradle。

cargo创建的项目,会自动生成Cargo.toml,类似Maven的pom.xml。

通过配置Cargo.toml,可以从中心库中自动下载扩展包。如:

[dependencies]
rand = "0.3.14"

这是一个用于生成随机数的二进制包。

注意这里有一个cargo.lock,具体细节这里不细说,但用的时候要注意。以后可能会补充链接。

这里还有一个命令

cargo doc --open

用来构建所有本地依赖(比如上面的rand包)提供的文档,并在浏览器中打开。细节不提。

使用rand的时候

extern crate rand;

use rand::Rng;

10.枚举匹配

match guess.cmp(&secret_number) {
    Ordering::Less => println!("Too small!"),
    Ordering::Greater => println!("Too big!"),
    Ordering::Equal => println!("You win!"),
}

guess是之前创建的String字符串变量,std::cmp::Ordering是一个枚举,三个成员常量是比较数值的三种结果(Less 、Greater和 Equal)。

cmp 方法用来比较两个值并可以在任何可比较的值上调用。它获取一个被比较值的引用:这里是把 guess 与secret_number 做比较。

这里有一个和Java很不同的地方,所以就用这种方式描述了

不过这里要注意,既然guess是一个字符串,那么怎么比较值的大小呢?

需要进行转换

let guess: u32 = guess.trim().parse().expect("Please type a number!");

expect表示异常处理,是第7节暂未提到的内容。

let guess表示创建了一个名为guess的(不可变的)变量,但之前我们已经有一个String类型的可变变量了。

这是Rust的一个特性,名称为shadow:用一个新值来隐藏 guess 之前的值。这个功能常用在需要转换值类型之类的场景,它允许我们复用 guess 变量的名字,而不是被迫创建两个不同变量,诸如 guess_str 和 guess 之类。

细节暂时不提。

11.循环

loop {

    //用break退出
    break;
}

退出的方式和Java类似:break和continue。

 

小结

本篇在结构上基本上就结束了,持续维护的,主要是以链接的方式加入。

其他所有权等概念,不一定会从本文链接,毕竟编程应该有的最基本的内容,本篇都已经有了。

有一些像if else,基本所有程序都一样,目前就先不考虑了,以后看能完成到什么地步吧。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值