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

相关推荐
夜幽青玄6 分钟前
mybatis-plus调用报 org.springframework.dao.DataIntegrityViolationException 错误处理
开发语言·python·mybatis
洲覆7 分钟前
Redis 内存淘汰策略
开发语言·数据库·redis·缓存
golang学习记13 分钟前
Go 高效开发的“十诫”:写出可维护、安全、高性能的 Go 代码
后端
洛克大航海23 分钟前
5-SpringCloud-服务链路追踪 Micrometer Tracing
后端·spring·spring cloud·zipkin·micrometer
偶尔贪玩的骑士26 分钟前
Kioptrix Level 1渗透测试
linux·开发语言·网络安全·php
小咕聊编程32 分钟前
【含文档+PPT+源码】基于spring boot的固定资产管理系统
java·spring boot·后端
それども37 分钟前
忽略Lombok构建警告
java·开发语言·jvm
用户685453759776944 分钟前
🎮 Java设计模式:从青铜到王者的代码修炼手册
java·后端
兮动人1 小时前
Java 线程详解
后端
纪卓志George1 小时前
从 AWS 故障反思:广告系统的全球单元化部署
后端·架构