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,33
   Yellow-eyed penguin,65
   Fiordland penguin,60
   Invalid,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);
     }
   }
 }

相关推荐

  1. Rust语言入门小结1

    2024-02-08 07:34:02       53 阅读
  2. Rust语言入门小结2

    2024-02-08 07:34:02       53 阅读
  3. Rust语言入门3

    2024-02-08 07:34:02       50 阅读
  4. rust语言学习入门

    2024-02-08 07:34:02       41 阅读
  5. Rust入门:你好,世界

    2024-02-08 07:34:02       30 阅读
  6. Rust入门:数据类型

    2024-02-08 07:34:02       124 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-02-08 07:34:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-02-08 07:34:02       100 阅读
  3. 在Django里面运行非项目文件

    2024-02-08 07:34:02       82 阅读
  4. Python语言-面向对象

    2024-02-08 07:34:02       91 阅读

热门阅读

  1. 设计模式(行为型模式)中介者模式

    2024-02-08 07:34:02       46 阅读
  2. LeetCode动态规划的解题思路

    2024-02-08 07:34:02       43 阅读
  3. HTML系列 -> <meta charset=“utf-8“>

    2024-02-08 07:34:02       52 阅读
  4. Spark的timestamp 数据时间问题

    2024-02-08 07:34:02       59 阅读
  5. ORACLE的 软 软 软 解析!

    2024-02-08 07:34:02       55 阅读
  6. 【大数据面试题】005 谈一谈 Flink Watermark 水印

    2024-02-08 07:34:02       49 阅读
  7. FolkMQ “单线程“消息中间件(开源) v1.0.32 发布

    2024-02-08 07:34:02       52 阅读
  8. [AIGC] 开源流程引擎哪个好,如何选型?

    2024-02-08 07:34:02       46 阅读
  9. 1.2 Verilog 简介及发展历史

    2024-02-08 07:34:02       62 阅读
  10. visual studio注册码

    2024-02-08 07:34:02       54 阅读