当前位置: 首页 > news >正文

20天学rust(一)和rust say hi

关注我,学习Rust不迷路

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

安装 Rust环境

Rust 官方有提供一个叫做 rustup 的工具,专门用于 rust 版本的管理,网址是:https://rustup.rs/,提供了很多实用的功能。 不过在这之前,我们需要先做一个配置。
因为一些特殊原因,rustup 官方源在中国大陆境内访问速度很慢,因此需要配置一个国内的源,主要有字节和中科大的,这里我们配置字节的源:https://rsproxy.cn/,从而加速访问。
接下来,这两行加入到你的 shell 配置文件(~/.zshrc 或者 ~/.bashrc)的末尾:

export RUSTUP_DIST_SERVER="https://rsproxy.cn"
export RUSTUP_UPDATE_ROOT="https://rsproxy.cn/rustup"

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

source ~/.bashrc

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

mkdir -p ~/.cargo
cd ~/.cargo
touch config

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

[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 

然后,执行以下命令:

curl --proto '=https' --tlsv1.2 -sSf https://rsproxy.cn/rustup-init.sh | sh

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

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 作为我们使用的工具。
先输入以下命令,来创建我们的项目目录:

cargo new practice-01

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

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

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

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)
}

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

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

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

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

然后再运行程序:

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

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

Hello!
hi
hi
hhhhh
hhhhh
who are u? 
who are u? 

完美! 这样,我们就完成了我们自己写的第一个 Rust 程序啦。
but 等等,到这里相信大家还是一脸问号, 大括号我能理解,叹号个什么鬼? 重要的冒号(:说两遍??别着急,下一章给大家答案。

关注我,学习Rust不迷路

http://www.lryc.cn/news/110636.html

相关文章:

  • 牢记这16个SpringBoot 扩展接口,写出更加漂亮的代码
  • c++两种设计模式 单例和工厂模式
  • 2023-08-05——JVM 栈
  • Camera之PhysicalCameraSettingsList/SurfaceMap/CameraMetadata/RequestList的关系(三十二)
  • 【ONE·Linux || 基础IO(二)】
  • 【LeetCode 算法】Power of Heroes 英雄的力量
  • 合宙Air724UG LuatOS-Air script lib API--ntp
  • LangChain+ChatGLM大模型应用落地实践(一)
  • PSO粒子群优化算法
  • 记一次 .NET某医疗器械清洗系统 卡死分析
  • C# 基于Rijndael对文件进行加解密
  • Elasticsearchr入门
  • 【ARM】imx6ul移植kernel记录,恩智浦github提供的最新kernel(2023年7月31)
  • eeglab(自用)
  • Dockerfile构建Tomcat镜像(源码)
  • Frida Error: getPackageInfoNoCheck(): has more than one overload的解决方法
  • flutter开发实战-RawKeyboardListener监听键盘事件及keycode。
  • Temu、希音们全托管引争议,跨境电商应变“工贸一体化”
  • 某科技公司提前批测试岗
  • 一次redis缓存不均衡优化经验
  • npm发布包
  • Qt5.13引入QtWebApp的模块后报错: error C2440: “reinterpret_cast”: 无法从“int”转换为“quintptr”
  • 软件为什么要进行性能压力测试?
  • 阻塞队列BlockingQueue详解
  • pygame贪吃蛇游戏
  • Mac系统下使用远程桌面连接Windows系统
  • 使用 OpenCV 和深度学习对黑白图像进行着色
  • 从价值的角度看,为何 POSE 通证值得长期看好
  • pytorch的CrossEntropyLoss交叉熵损失函数默认reduction是平均值
  • OKR管理策略:为开发团队注入动力