20天学rust(一)和rust say hi

关注我,学习Rust不迷路

工欲善其事,必先利其器。第一节我们先来配置rust需要的环境和安装趁手的工具,然后写一个简单的小程序。

安装 Rust环境

Rust 官方有提供一个叫做 rustup 的工具,专门用于 rust 版本的管理,网址是:https://rustup.rs/,提供了很多实用的功能。 不过在这之前,我们需要先做一个配置。

因为一些特殊原因,rustup 官方源在中国大陆境内访问速度很慢,因此需要配置一个国内的源,主要有字节和中科大的,这里我们配置字节的源:https://rsproxy.cn/,从而加速访问。

接下来,这两行加入到你的 shell 配置文件(~/.zshrc 或者 ~/.bashrc)的末尾:

bash 复制代码
export RUSTUP_DIST_SERVER="https://rsproxy.cn"
export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"

然后 reload 或者 source 一下你的配置文件,让配置生效。

bash 复制代码
source ~/.bashrc

然后,还需要创建一个cargo的配置文件,依次执行以下命令

bash 复制代码
mkdir -p ~/.cargo
cd ~/.cargo
touch config

然后将以下几行放到你的~/.cargo/config文件中:

bash 复制代码
[source.crates-io]
replace-with = 'rsproxy'

[source.rsproxy]
registry = "https://rsproxy.cn/crates.io-index"
[source.rsproxy-sparse]
registry = "sparse+https://rsproxy.cn/index/"

[registries.rsproxy]
index = "https://rsproxy.cn/crates.io-index"

[net]
git-fetch-with-cli = true 

然后,执行以下命令:

bash 复制代码
curl --proto '=https' --tlsv1.2 -sSf https://rsproxy.cn/rustup-init.sh | sh

然后一路回车(默认)就好,最后执行一下:

bash 复制代码
source "$HOME/.cargo/env"

打造趁手工具

rust的ide有很多:Visual Studio Code、IntelliJ IDEA、 CLion、Rust-analyzer等,社区主流的是VSCode 和 rust-analyzer组合。VSCode 的安装直接参照官方说明就好:VSCode QuickStart

打开 VSCode 后,我们按照 https://rust-analyzer.github.io/ 这里的 QuickStart 说明,在 MarketPlace 中下载并安装一下 rust-analyzer。

好了,大功告成。

最后的最后,强烈推荐大家安装一个初学者神器------chatgpt - Bito:一个代理了chatgpt的插件,学习过程中遇到的任何问题都可以问它。

Say Hi

接下来,我们就要进入到真正的 Rust 实战中啦。 首先要介绍下rust的项目管理工具:Cargo,Rust 社区使用 Cargo 来作为包管理和构建工具,之后的所有示例都会以 Cargo 作为我们使用的工具。

先输入以下命令,来创建我们的项目目录:

bash 复制代码
cargo new practice-01

然后,我们用 VSCode 打开这个目录,这时候 practice-01 目录应当如下:

bash 复制代码
practice-01
├── Cargo.lock # Cargo 依赖版本锁定文件
├── Cargo.toml # Cargo 主要设置文件
└── src
    └── main.rs # Rust 程序入口

然后,我们在 main.rs 中加入以下代码(一定要自己手动敲,感受下rust语法):

bash 复制代码
use std::io;

fn main() {
    println!("Hello!");

    loop {
        let mut input = String::new();
        io::stdin()
            .read_line(&mut input)
            .expect("Failed to read input!");

        if input.contains("quit") {
            break;
        }
        i_say_what_u_say(input)
    }
}

fn i_say_what_u_say(str: String) {
    print!("{}", str)
}

好,接下来我们编译下代码,看看输出

bash 复制代码
cargo build

// 输出
    Finished dev [unoptimized + debuginfo] target(s) in 0.06s

上面结果表示构建成功了,我们在文件目录下也能看到一个target文件夹,就是刚刚编译好的文件。 目录结构如下

bash 复制代码
practice-01
├── Cargo.lock # Cargo 依赖版本锁定文件
├── Cargo.toml # Cargo 主要设置文件
├── targe # 编译后文件存放的目录
└── src
    └── main.rs # Rust 程序入口

然后再运行程序:

bash 复制代码
cargo run

// 输出
    Finished dev [unoptimized + debuginfo] target(s) in 0.00s
     Running `target/debug/practice-01`

好,接下来我们试试输入一些内容,看看会发生什么:

bash 复制代码
Hello!
hi
hi
hhhhh
hhhhh
who are u? 
who are u? 

完美! 这样,我们就完成了我们自己写的第一个 Rust 程序啦。

but 等等,到这里相信大家还是一脸问号, 大括号我能理解,叹号个什么鬼? 重要的冒号(:说两遍??别着急,下一章给大家答案。

关注我,学习Rust不迷路

相关推荐
0白露1 小时前
Apifox Helper 与 Swagger3 区别
开发语言
Tanecious.2 小时前
机器视觉--python基础语法
开发语言·python
叠叠乐2 小时前
rust Send Sync 以及对象安全和对象不安全
开发语言·安全·rust
战族狼魂2 小时前
CSGO 皮肤交易平台后端 (Spring Boot) 代码结构与示例
java·spring boot·后端
niandb3 小时前
The Rust Programming Language 学习 (九)
windows·rust
Tttian6223 小时前
Python办公自动化(3)对Excel的操作
开发语言·python·excel
杉之4 小时前
常见前端GET请求以及对应的Spring后端接收接口写法
java·前端·后端·spring·vue
hycccccch4 小时前
Canal+RabbitMQ实现MySQL数据增量同步
java·数据库·后端·rabbitmq
独好紫罗兰4 小时前
洛谷题单2-P5713 【深基3.例5】洛谷团队系统-python-流程图重构
开发语言·python·算法
bobz9655 小时前
k8s 怎么提供虚拟机更好
后端