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.mzph.cn/news/24844.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JSON转换:实体类和JSONObject互转,List和JSONArray互转(fastjson版)

//1.java对象转化成String String sJSONObject.toJSONString(javaObject.class); //2. java对象转化成Object Object strJSONObject.toJSON(javaObject.class); //3.String类型转json对象 JSONObject jsonObject JSONObject.parseObject(str); //4. String…

window远程连接Linux

Linux启用ssh服务 管理员权限进入root 安装 OpenSSH 服务器软件包 对于 Debian、Ubuntu 或基于这些发行版的系统,可以运行以下命令安装: sudo apt update sudo apt install openssh-server对于基于 Red Hat、CentOS 或 Fedora 的系统,可以…

xcode 的app工程与ffmpeg 4.4版本的静态库联调,ffmpeg内下的断点无法暂停。

先阐述一下我的业务场景,我有一个iOS的app sdk项目,下面简称 A ,以及运行 A 的 app 项目,简称 A demo 。 引用关系为 A demo 引用了 A ,而 A 引用了 ffmpeg 的静态库(.a文件)。此时业务出现了 b…

jmeter中json提取器,获取多个值,并通过beanshell组成数组

jmeter中json提取器介绍 特别说明:**Compute concatenation var(suffix_ALL)😗*如果找到许多结果,则插件将使用’ , 分隔符将它们连接起来,并将其存储在名为 _ALL的var中 json提取器调试 在查看结果树中选择JSON Pat…

2023,谁在引领实时互动进入高清时代?

实践是检验真理的唯一标准,技术是行业进步的核心动能。在实时互动的新时代里,不断进化的声网已然完成自证。 作者|斗斗 出品|产业家 “一个医疗行业的客户,曾向我们提出一个需求,希望在120急救场景下,可以远程看清…

docker search 镜像报错: connect: no route to host (桥接模式配置静态IP)

如下 原因 可能有多种: ① 没有开放防火墙端口 ② ip地址配置有误 解决 我是因为虚拟机采用了桥接模式,配置静态ip地址有问题。 先确认虚拟机采用的是 桥接模式,然后启动虚拟机。 1、打开命令行,输入下面指令,打开…

修改node_modules里的源码

最近在工作中使用到一款生成二维码的依赖(以vue项目为例讲解):vue-qr,安装的4.0.9版本的,在启动工程的时候报错: You may need an appropriate loader to handle this file type后我查阅各种资料发现 1&a…

Spring中Bean的线程安全问题

Spring框架本身没有明确指出Bean的线程安全问题,所以Bean本身也不具备线程安全的特性,具体情况得看scope的情况。 1.原型的(prototype) 每次创建一个新的对象,每个线程使用的对象都是要新创建的,所以不会存在线程安全的问题。 2…

[论文笔记] chatgpt系列 2.6 DeepSpeed-chat 数据集

一、FT数据集 & Reward model数据集 Deepspeed-chat 源代码的数据集: Dahoas/rm-static: 这是一个用于强化学习的静态环境数据集,包含了一个机器人在一个固定环境中的运动轨迹。该数据集旨在用于评估强化学习算法在静态环境下的表现。 Dahoas/full-hh-rlhf: 这是一个用于…

TypeScript初学

文章转载:https://blog.csdn.net/weixin_46185369/article/details/121512287 写的很详细,适合初学者看看。 一、TypeScript是什么? 1.TypeScript简称:TS,是JavaScript的超集。简单来说就是:JS有的TS都有…

6.4.tensorRT高级(1)-UNet分割模型导出、编译到推理(无封装)

目录 前言1. Unet导出2. Unet推理总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 高级-Unet分割模型导出、编译到…

docker 安装 字体文件

先说一下我当前的 场景 及 环境,这样同学们可以先评估本篇文章是否有帮助。 环境: dockerphp8.1-fpmwindows 之所以有 php,是因为这个功能是使用 php 开发的,其他语言的同学,如果也有使用到 字体文件,那么…

微前端中的 CSS

本文为翻译 本文译者为 360 奇舞团前端开发工程师原文标题:CSS in Micro Frontends 原文作者:Florian Rappl 原文地址:https://dev.to/florianrappl/css-in-micro-frontends-4jai 我被问得最多的问题之一是如何在微前端中处理 CSS。毕竟&…

VLE基于预训练文本和图像编码器的图像-文本多模态理解模型:支持视觉问答、图文匹配、图片分类、常识推理等

项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域):汇总有意义的项目设计集合,助力新人快速实…

VSCode---通过ctrl+鼠标滚动改变字体大小

打开设置然后在右边输editor.mouseWheelZoo勾选即可实现鼠标滚动改变字体大小 4.这种设置的字体大小是固定的

A Survey of Embodied AI: From Simulators to Research Tasks 论文阅读

论文信息: 题目:A Survey of Embodied AI: From Simulators to Research Tasks 作者:Jiafei Duan, Samson Yu 来源:arXiv 时间:2022 Abstract 通过评估当前的九个具体人工智能模拟器与我们提出的七个功能&#xff0…

MATLAB(R2023a)添加工具箱TooLbox的方法-以GPOPS为例

一、找到工具箱存放位置 首先我们需要找到工具箱的存放位置,点击这个设置路径可以看到 我们的matlab工具箱的存放位置 C:\Program Files\MATLAB\R2023a\toolbox\matlab 从资源管理器中打开这个位置,可以看到里面各种工具箱 二、放入工具箱 解压我们…

服务器端开发-golang dlv 远程调试

1。需要root权限的服务器代码调试 sudo ./appps to get piddlv attach pid --headless --listen:40000 --api-version2 --accept-multiclientattach the golang IDE or other IDE 2。不需要root权限的服务器代码调试,另一种选择 dlv --listen:40000 --headlesstr…

Windows11 家庭中文版关于本地组策略编辑器gpedit.msc找不到即打不开的解决办法(征诚小张售后实测有效)

Windows11 家庭中文版关于本地组策略编辑器gpedit.msc找不到即打不开的解决办法 根本原因:是因为Windows11家庭中文版的 版本系统没内置安装本地策略组编辑器 好了废话不多说 直接说解决办法 第一步 首先电脑上新建一个空文本文件 输入以下内容: echo o…

Day 21 C ++ STL(Standard Template Library,标准模板库)

STL 定义STL六大组件容器——置物之所也STL容器就是将运用最广泛的一些数据结构实现出来常用的数据结构序列式容器关联式容器 算法——问题之解法也质变算法非质变算法 迭代器——容器和算法之间粘合剂迭代器种类各种迭代器支持的常见运算操作 STL示例容器 —— vector迭代器&a…