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不迷路

相关推荐
陌小呆^O^几秒前
Cmakelist.txt之win-c-udp-client
c语言·开发语言·udp
I_Am_Me_16 分钟前
【JavaEE进阶】 JavaScript
开发语言·javascript·ecmascript
重生之我是数学王子26 分钟前
QT基础 编码问题 定时器 事件 绘图事件 keyPressEvent QT5.12.3环境 C++实现
开发语言·c++·qt
Ai 编码助手28 分钟前
使用php和Xunsearch提升音乐网站的歌曲搜索效果
开发语言·php
学习前端的小z32 分钟前
【前端】深入理解 JavaScript 逻辑运算符的优先级与短路求值机制
开发语言·前端·javascript
神仙别闹39 分钟前
基于C#和Sql Server 2008实现的(WinForm)订单生成系统
开发语言·c#
XINGTECODE40 分钟前
海盗王集成网关和商城服务端功能golang版
开发语言·后端·golang
程序猿进阶1 小时前
堆外内存泄露排查经历
java·jvm·后端·面试·性能优化·oom·内存泄露
FIN技术铺1 小时前
Spring Boot框架Starter组件整理
java·spring boot·后端
zwjapple1 小时前
typescript里面正则的使用
开发语言·javascript·正则表达式