用《Rust权威指南》重学Rust语言。
2021年初,我已经学习了一遍Rust基础,当时忙于其他内容,便把Rust放在了一边,如今年底有些空闲时间,复习一下Rust,捡一捡过去的知识点。该系列博客还是以个人笔记的形式进行梳理,若您想从头至尾的仔细学习Rust每个特性,那么您至少需要阅读其官方文档或找一本实打实的书逐字研读。
这是一门操作系统级别的语言,学习周期非常的长,如果不带有目的性学习,学完后也许收获甚微。各类编程语言设计哲学不一,所以对某些专业术语的解释也不一,可以类比着看,但是请不要说这个语言中的XX就是C++语言中的什么,可以说像C++中的某个特性。
逃不过艾宾浩斯记忆曲线。人的某些记忆会随着时间而淡忘。大概三年前,我放下Java投入Go语言的怀抱,三年多时间不写Java的项目,如果让我现在直接用Java去实现一个逻辑,那我是做不到的,但是依然可以读懂Java的代码。当时是因为用SSM实现某项目时,被其凌乱的配置文件搞得团团糟,加之区块链技术盛行,而Go语言是实现区块链的主力语言,所以一气之下,把Java放下了,但并非放弃。现在回头看,Java的生态已然成型,内卷程度也十分的高。
对技术不应有偏见。每一门编程语言的诞生都有它的使命,即使它不能在你的手里熠熠生辉,却可能在别人的项目上闪闪发光。
一个猜数字的游戏:
use std::io;
use std::cmp::Ordering;
use rand::Rng;
fn main() {
println!("欢迎来到瞎猜数字游戏,请输入你猜的数字[1,100]:");
let secret_number = rand::thread_rng().gen_range(1..=100);
loop {
let mut guess = String::new();
io::stdin().read_line(&mut guess).expect("invalid input");
let guess:i32 = match guess.trim().parse(){
Ok(num) => num,
Err(_) => continue,
};
match guess.cmp(&secret_number) {
Ordering::Less => println!("猜小了,请输入你猜的数字:"),
Ordering::Equal => {
println!("恭喜你,猜中了!");
break;
}
Ordering::Greater => {println!("猜大了,请输入你猜的数字:");}
}
}
}
Cargo.toml
[package]
name = "learnRust"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
rand="0.8.5"