快速配置 Rust 开发环境并编写一个小应用

安装:


curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh


更新:


Rust 的升级非常频繁. 如果安装 Rustup 后已有一段时间,那么很可能 Rust 版本已经过时, 运行 rustup update 获取最新版本的 Rust


alt

rustc:编译Rust程序


alt

rustc只适合简单的Rust程序,较大型的项目还是推荐使用Cargo


Cargo:Rust 的构建工具和包管理器


在安装 Rustup 时, 也会安装 Rust 构建工具和包管理器的最新稳定版,即 Cargo.

Cargo 可以做很多事情:

  • cargo build 可以构建项目
  • cargo run 可以运行项目
  • cargo test 可以测试项目
  • cargo doc 可以为项目构建文档
  • cargo publish 可以将库发布到 crates.io

要检查否安装了 Rust 和 Cargo, 可在终端中运行:

cargo --version


cargo run

alt

cargo check

alt

cargo build --release

alt

cargo install

在Mac上,Cargo可以像brew一样,安装很多Rust写的工具,如安装一款可能比Tmux还要好用的终端工具zellij[1]:

cargo install zellij



为编辑器安装Rust插件:


alt

创建新项目:


cargo new hello-rust

这会生成一个名为 hello-rust 的新目录, 其中包含以下文件:

alt

其中, Cargo.toml 为 Rust 的清单文件, 包含了项目的元数据和依赖库

src/main.rs 为编写应用代码的地方


进入项目中,执行 cargo run

alt

添加依赖:


在 Rust 中, 通常把包称作 crates

可以在 crates.io[2], 即 Rust 包的仓库中找到所有类别的库

(包和库,可以认为是一回事)


此处使用名为 ferris-says 的库.

Cargo.toml 文件中添加以下信息:

(从 crate 页面上获取)

[dependencies]
ferris-says = "0.2"

alt

(点击这个小图标,就会跳到这个包的官方地址[3])

alt

然后运行:

cargo build

Cargo 就会安装该依赖.

(运行此命令会创建一个新文件 Cargo.lock, 该文件记录了本地所用依赖库的精确版本. 类似于yarn.lock)


编写应用:


main.rs 中:

use std::io::{BufWriter, stdout};
use ferris_says::say;

fn main() {
    let stdout = stdout();
    let message = String::from("Hello fellow Rustaceans! --- by shuang");
    let width = message.chars().count();


    let mut writer = BufWriter::new(stdout.lock());
    say(message.as_bytes(), width, &mut writer).unwrap();
}

执行 cargo run:

alt

了解更多:


Ferris[4] 是 Rust 社区的 非官方吉祥物.

很多 Rust 程序员自称 Rustaceans, 它与crustacean(甲壳纲动物) 相似

建议用“they”、“them”等代词, 而不用带性别的代词来指代 Ferris

Ferris 与形容词 ferrous(adj. [化学] 亚铁的;铁的,含铁的) 相似, 其的含义与铁有关.

由于 Rust(锈)通常由铁形成, 因此算得上是这个吉祥物名字的有趣来源


alt



参考:

入门:快速配置 Rust 开发环境并编写一个小应用![5]

连微软也在力推:

Take your first steps with Rust[6]

参考资料

[1]

zellij: https://github.com/zellij-org/zellij

[2]

crates.io: https://crates.io/

[3]

官方地址: https://docs.rs/ferris-says/0.2.0/ferris_says/

[4]

Ferris: https://rustacean.net/

[5]

入门:快速配置 Rust 开发环境并编写一个小应用!: https://www.rust-lang.org/zh-CN/learn/get-started

[6]

Take your first steps with Rust: https://docs.microsoft.com/en-us/learn/paths/rust-first-steps/

本文由 mdnice 多平台发布

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344.shtml

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

相关文章

qt和vue的交互

1、首先在vue项目中引入qwebchannel /******************************************************************************** Copyright (C) 2016 The Qt Company Ltd.** Copyright (C) 2016 Klarlvdalens Datakonsult AB, a KDAB Group company, infokdab.com, author Milian …

记录--再也不用手动改package.json的版本号

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 本文的起因是有在代码仓库发包后,同事问我“为什么package.json 里的版本还是原来的,有没有更新?”,这个时候我意识到,我们完全没有必要在每…

阿里云无影云电脑具体价格_云桌面不同配置1元报价

阿里云无影云电脑配置费用,4核8G企业办公型云电脑可以免费使用3个月,无影云电脑地域不同费用不同,无影云电脑是由云桌面配置、云盘、互联网访问带宽、AD Connector、桌面组共用桌面session等费用组成,阿里云百科分享阿里云无影云电…

什么是分布式软件系统

:什么是分布式软件系统?分布式软件系统是什么意思? 分布式软件系统(Distributed Software Systems)是支持分布式处理的软件系统,是在由通信网络互联的多处理机体系结构上执行任务的系统。它包括分布式操作系统、分布式程序设计语言及其编译(解释)系统、分…

Unity 2D骨骼动画+IK反向动力学

本文言简意赅的完成这个流程,废话不多说!干! 等等,先看看效果 第一步:导入2D Animation包 当前环境:Unity3D 2021(不需要完全一样也可以) 进入unity后点击Window->PackageManager打开如下界面 按Insta…

LangChain 联合创始人下场揭秘:如何用 LangChain 和向量数据库搞定语义搜索?

近期,关于 ChatGPT 的访问量有所下降的消息引发激烈讨论,不过这并不意味着开发者对于 AIGC 的热情有所减弱,例如素有【2023 最潮大语言模型 Web 开发框架】之称的大网红 LangChain 的热度就只增不减。 原因在于 LangChain 作为大模型能力“B2…

流?I/O操作?阻塞?epoll?

流?I/O操作?阻塞?epoll? 一、流?I/O操作? 阻塞? (1) 流 可以进行I/O操作的内核对象文件、管道、套接字……流的入口:文件描述符(fd) (2) I/O操作 所有对流的读写操作,我们都可以称之为IO…

Vue3_简介、CompositionVPI、新的组件

文章目录 Vue3快速上手1.Vue3简介2.Vue3带来了什么1.性能的提升2.源码的升级3.拥抱TypeScript4.新的特性 一、创建Vue3.0工程1.使用 vue-cli 创建2.使用 vite 创建 二、常用 Composition API1.拉开序幕的setup2.ref函数3.reactive函数4.Vue3.0中的响应式原理vue2.x的响应式Vue3…

代码模版-vue使用axios调用请求

文章目录 简介步骤一:安装 axios 依赖步骤二:自己配置请求 request步骤三:在 main.js 中指定 request步骤四:其他组件的 js 的请求 简介 vue 常常使用 axios 包来调用请求 步骤一:安装 axios 依赖 cnpm install --s…

万字长文 | Hadoop 上云: 存算分离架构设计与迁移实践

一面数据原有的技术架构是在线下机房中使用 CDH 构建的大数据集群。自公司成立以来,每年都保持着高速增长,业务的增长带来了数据量的剧增。 在过去几年中,我们按照每 1 到 2 年的规划扩容硬件,但往往在半年之后就不得不再次扩容。…

探索未来:Java在人工智能领域的崛起

在人工智能(AI)发展的浪潮中,Java作为一种广泛应用的编程语言,正逐渐崭露头角。本文将探讨Java在人工智能领域的应用和发展前景,揭示Java如何适应并推动人工智能技术的创新和普及。 Java与人工智能:从过去到…

《Redis 核心技术与实战》课程学习笔记(八)

String 类型为什么不好用了? String 类型可以保存二进制字节流,只要把数据转成二进制字节数组,就可以保存了。String 类型并不是适用于所有场合的,它有一个明显的短板,就是它保存数据时所消耗的内存空间较多。 为什么…

Unity Shader - SV_POSITION 和 TEXCOORD[N] 的varying 在 fragment shader 中输出的区别

起因 因另一个TA同学问了一个问题 我抱着怀疑的心态,测试了一下 发现 varying 中的 sv_position 和 texcoord 的值再 fragment shader 阶段还真的不一样 而且 sv_position 还不是简单的 clipPos/clipPos.w 的操作 因此我自己做了一个试验: 结果还是不一…

Scala集合 - 不可变数组

水善利万物而不争,处众人之所恶,故几于道💦 目录 一、两种创建方式 二、数组赋值 三、五种数组遍历方式 四、添加元素 一、两种创建方式 创建时指定数组存放的数据类型及数组的大小,,大小确定后不可以变化 val arr01 new Array[…

电脑应用程序发生异常怎么办?

有时候我们打开电脑上面的某个软件时,会打不开,并且会弹出如下的错误提示“应用程序发生异常 未知的软件异常(xxx),位置为xx”。相信大多数的人在使用电脑的时…

Pytorch基本使用—激活函数

✨1 介绍 ⛄ 1.1 概念 激活函数是神经网络中的一种数学函数,它被应用于神经元的输出,以决定神经元是否应该被激活并传递信号给下一层。常见的激活函数包括Sigmoid函数、ReLU函数、Tanh函数等。 🎄 1.2 性质 激活函数是神经网络中的一种重…

为什么单片机可以直接烧录程序的原因是什么?

单片机(Microcontroller)可以直接烧录程序的原因主要有以下几点: 集成性:单片机是一种高度集成的芯片,内部包含了处理器核心(CPU)、存储器(如闪存、EEPROM、RAM等)、输入…

校园wifi网页认证登录入口

很多校园wifi网页认证登录入口是1.1.1.1 连上校园网在浏览器写上http://1.1.1.1就进入了校园网 使 用 说 明 一、帐户余额 < 0.00元时&#xff0c;帐号被禁用&#xff0c;需追加网费。 二、在计算中心机房上机的用户&#xff0c;登录时请选择新建帐号时给您指定的NT域&…

windows 搭建ssh服务

1、官网下载安装包&#xff1a;mls-software.com 2、点击安装&#xff08;一直默认即可&#xff09; 3、配置 opensshServer 4、成功登录

场用以111

PearOCR&#xff1a;PearOCR&#xff0c;在线图片转文字&#xff0c;免费OCR&#xff0c;在线图片文字提取&#xff0c;本地运算&#xff0c;无上传 haikei&#xff1a;Haikei Wormhole&#xff1a;Wormhole - Simple, private file sharing AIPIX&#xff1a;https://photo…