Rust语言入门小结(第1篇)

Rust是一种新兴编程语言,既有高级语言的风格,又有底层语言级别的性能;是对于实时性、安全性要求高的应用开发的理想语言。
笔者的自学记录,供参考

环境搭建与第一个Rust程序

  1. 以Linux环境为例
# 下载并安装
curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
# 更新
rustup update
# 检查安装是否成功
rustc -V
  1. Rust语言的包管理工具–cargo
# 新建world_hello工程
cargo new world_hello
# 运行的第一种方式
cargo run
# 第二种方式
cargo build
./target/debug/<bin>
# 编译出高性能代码
cargo run --release
# 更快地验证代码的正确性
cargo check
  1. 初识Rust语言
    打开main.rs文件,
fn greet_world() {let southern_germany = "Grüß Gott!";let chinese = "世界,你好";let english = "World, hello";let regions = [southern_germany, chinese, english];for region in regions.iter() {println!("{}", &region);}
}fn main() {greet_world();
}

下面的示例,展示了一些Rust的特性,你会发现类似C\Python的风格。

fn main() {let penguin_data = "\common name,length (cm)Little penguin,33Yellow-eyed penguin,65Fiordland penguin,60Invalid,data";let records = penguin_data.lines();for (i, record) in records.enumerate() {if i == 0 || record.trim().len() == 0 {continue;}// 声明一个 fields 变量,类型是 Vec// Vec 是 vector 的缩写,是一个可伸缩的集合类型,可以认为是一个动态数组// <_>表示 Vec 中的元素类型由编译器自行推断,在很多场景下,都会帮我们省却不少功夫let fields: Vec<_> = record.split(',').map(|field| field.trim()).collect();if cfg!(debug_assertions) {// 输出到标准错误输出eprintln!("debug: {:?} -> {:?}",record, fields);}let name = fields[0];// 1. 尝试把 fields[1] 的值转换为 f32 类型的浮点数,如果成功,则把 f32 值赋给 length 变量//// 2. if let 是一个匹配表达式,用来从=右边的结果中,匹配出 length 的值://   1)当=右边的表达式执行成功,则会返回一个 Ok(f32) 的类型,若失败,则会返回一个 Err(e) 类型,if let 的作用就是仅匹配 Ok 也就是成功的情况,如果是错误,就直接忽略//   2)同时 if let 还会做一次解构匹配,通过 Ok(length) 去匹配右边的 Ok(f32),最终把相应的 f32 值赋给 length//// 3. 当然你也可以忽略成功的情况,用 if let Err(e) = fields[1].parse::<f32>() {...}匹配出错误,然后打印出来,但是没啥卵用if let Ok(length) = fields[1].parse::<f32>() {// 输出到标准输出println!("{}, {}cm", name, length);}}}

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

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

相关文章

深入理解Netty及核心组件使用—上

目录 Netty的优势 为什么Netty使用NIO而不是AIO&#xff1f; Netty基本组件 Bootstrap、EventLoop(Group) 、Channel 事件和 ChannelHandler、ChannelPipeline ChannelFuture Netty入门程序 服务端代码 客户端代码 运行结果 Netty的优势 1. API 使用简单&#xff0c…

docker部署showdoc

目录 安装 1.拉取镜像 2.创建容器 使用 1.选择语言 2.默认账户/密码:showdoc/123456​编辑 3.登陆 4.首页 安装 1.拉取镜像 docker pull star7th/showdoc 2.创建容器 mkdir -p /opt/showdoc/html docker run -d --name showdoc --userroot --privilegedtrue -p 1005…

RocketMQ事务消息

事务消息 应用场景&#xff1a; ​ 事务消息是RocketMQ非常有特色的一个高级功能。他的基础诉求是通过RocketMQ的事务机制&#xff0c;来保证上下游的数据一致性。 ​ 以电商为例&#xff0c;用户支付订单这一核心操作的同时会涉及到下游物流发货、积分变更、购…

黄金交易策略:手工同向单减保留仓

虽然保留仓的仓位不大&#xff0c;扛个一年半载不是问题&#xff0c;但闲着也可以手工处理掉&#xff08;10000点以内的不要处理&#xff09;。挑一个最大的单&#xff0c;同向相同的手数&#xff0c;并把两单的止盈设置中位数&#xff08;也没有这么严格&#xff0c;差不多就好…

[嵌入式AI从0开始到入土]5_炼丹炉的搭建(基于wsl2_Ubuntu22.04)

[嵌入式AI从0开始到入土]嵌入式AI系列教程 注&#xff1a;等我摸完鱼再把链接补上 可以关注我的B站号工具人呵呵的个人空间&#xff0c;后期会考虑出视频教程&#xff0c;务必催更&#xff0c;以防我变身鸽王。 第一章 昇腾Altas 200 DK上手 第二章 下载昇腾案例并运行 第三章…

深度学习在知识图谱问答中的革新与挑战

目录 前言1 背景知识2 基于深度学习改进问句解析模型2.1 谓词匹配2.2 问句解析2.3 逐步生成查询图 3 基于深度学习的端到端模型3.1 端到端框架3.2 简单嵌入技术 4 优势4.1 深入的问题表示4.2 实体关系表示深挖4.3 候选答案排序效果好 5 挑战5.1 依赖大量训练语料5.2 推理类问句…

app逆向-android-studio安装使用教程

Android Studio 是谷歌推出的一个Android集成开发工具&#xff0c;基于IntelliJ IDEA. 类似 Eclipse ADT&#xff0c;Android Studio 提供了集成的 Android 开发工具用于开发和调试。 android-studio下载地址&#xff1a;https://developer.android.com/studio/archive androi…

vue使用Mars3d弹框嵌套video视频/实时视频(m3u8)使用hls.js

下载hls.js http://mars3d.cn/lib/video/hls/hls.js下载 1.首先绘制地图我使用的天地图 async infoMars3d() {const that this;var mapOptions {scene: {center: {lat: 30.435192,lng: 103.936535,alt: 200000,heading: 359,pitch: -79},highDynamicRange: false},// 方式1&a…

bat 不通服务器之间文件夹文件增量同步

要在不同的服务器之间实现文件夹的增量同步&#xff0c;你可以使用批处理脚本结合一些外部工具&#xff0c;比如Robocopy&#xff0c;这是一个Windows内置的命令行工具&#xff0c;专门用于文件和目录的复制&#xff0c;并支持增量复制。 以下是一个使用Robocopy的批处理脚本示…

Backtrader 文档学习- Plotting

Backtrader 文档学习- Plotting 虽然回测是一个基于数学计算的自动化过程&#xff0c;还是希望实际通过可视化验证。无论是使用现有算法回测&#xff0c;还是观察数据驱动的指标&#xff08;内置或自定义&#xff09;。 凡事都要有人完成&#xff0c;绘制数据加载、指标、操作…

Redis实现秒杀

前期准备 缓存选择考虑 Redis和Redis Cluster&#xff08;分布式版本&#xff09;&#xff0c;是一个分布式缓存系统。其支持多种数据结构&#xff0c;也支持MQ。Redis在性能上做了大量优化。因此使用Redis或者Redis Cluster就可以轻松实现一个强大的秒杀系统。 用Redis的这…

图数据库 之 Neo4j - Browser 介绍(3)

Neo4j Browser 介绍 Neo4j Browser 中有 3 个模块&#xff0c;侧边栏&#xff0c;Cypher 编辑器与结果栏&#xff0c;在进入 Neo4j Browser 时结果栏会展示欢迎界面。 Cypher 编辑器 Cypher 是一种图形查询语言&#xff0c;用于查询和操作图形数据库。它是 Neo4j 图形数据库的…

积加ERP:实现电商平台、CRM和客服系统的高效集成

无缝连接&#xff1a;积加ERP与多元电商平台的集成 积加ERP利用其突破性的无代码开发技术&#xff0c;与亚马逊、沃尔玛等电商巨头实现了无缝连接。这种深度集成的方式&#xff0c;降低了跨境卖家的工作压力&#xff0c;提升了运营智能化水平&#xff0c;使得供应链管理和财务…

C# OpenVINO 图片旋转角度检测

目录 效果 项目 代码 下载 效果 项目 代码 using OpenCvSharp; using Sdcb.OpenVINO; using System; using System.Diagnostics; using System.Drawing; using System.Linq; using System.Runtime.InteropServices; using System.Security.Cryptography; using System.Te…

openEuler文件系统

openEuler文件系统 思维导图:https://download.csdn.net/download/lanlingxueyu/88820240 openEuler内核源于Linux,Linux内核支持十多种不同类型的文件系统,比如Btrfs、JFS、ReiserFS、ext、ext2、ext3、ext4、ISO9660、XFS、Minix、MSDOS、UMSDOS、VFAT、 NTFS、HPFS、NFS…

WiFi保护访问协议WPA2\WPA3

WPA2和WPA3是无线加密标准&#xff0c;用于保护网络通信不被未授权访问。 WPA3是最新的安全协议&#xff0c;提供比WPA2更强的保护机制&#xff0c;但并非所有设备都支持WPA3。 1、安全模式 在无线安全设置中&#xff0c;你会看到加密方式或安全模式的选项。 选择WPA2-PSK、…

Avalonia学习(二十三)-大屏

弄一个大屏显示的界面例子&#xff0c;但是代码有点多&#xff0c;还有用户控件。 目前还有一点问题在解决&#xff0c;先看一下界面效果。 圆形控件 前端代码 <UserControl xmlns"https://github.com/avaloniaui"xmlns:x"http://schemas.microsoft.com/…

django admin 自定义界面时丢失左侧导航 nav_sidebar

只显示了自定义模板的内容&#xff0c;左侧导航没有显示出来。 原因&#xff1a;context 漏掉了&#xff0c;要补上。 # 错误写法&#xff08;左侧导航不显示&#xff09;def changelist_view(self, request, extra_contextNone):form CsvImportForm()payload {"form&qu…

【开源】JAVA+Vue.js实现高校实验室管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、研究内容2.1 实验室类型模块2.2 实验室模块2.3 实验管理模块2.4 实验设备模块2.5 实验订单模块 三、系统设计3.1 用例设计3.2 数据库设计 四、系统展示五、样例代码5.1 查询实验室设备5.2 实验放号5.3 实验预定 六、免责说明 一、摘…

Java图形化界面编程—— 基本组件和对话框 笔记

2.5 AWT中常用组件 2.5.1 基本组件 组件名功能ButtonButtonCanvas用于绘图的画布Checkbox复选框组件&#xff08;也可当做单选框组件使用&#xff09;CheckboxGroup选项组&#xff0c;用于将多个Checkbox 组件组合成一组&#xff0c; 一组 Checkbox 组件将只有一个可以 被选中…