rust学习第一天

首先认识一下 rust:

Rust 是一种系统级编程语言,它专注于安全性、并发性和性能。Rust 由 Mozilla 研发,于 2010 年首次发布,并在不断地发展和改进。它旨在成为一种用于构建高效、可靠和安全软件的现代编程语言。

以下是 Rust 的一些特点和亮点:

  1. 内存安全: Rust 的最大特点之一是它的内存安全性。它使用借用、生命周期和所有权的概念来确保程序在运行时没有数据竞争、空指针和悬挂引用等常见的内存错误。
  2. 零成本抽象: Rust 支持高级抽象,如模式匹配、泛型和 traits,同时也支持底层控制,如手动内存管理。
  3. 并发性: Rust 鼓励并发编程,提供线程安全的原语和库,使开发者能够轻松地编写并发代码。
  4. 快速性能: Rust 编译器对代码进行优化,生成高效的机器代码,使得 Rust 应用程序可以在性能方面与 C/C++相媲美。
  5. 生态系统: Rust 拥有丰富的第三方库和工具,支持各种用途,从网络编程到嵌入式开发。
  6. 跨平台支持: Rust 可以在各种平台上进行编译和运行,支持 Windows、Linux、macOS 等操作系统。

Rust 在近年来获得了广泛的关注和认可,特别在系统编程、Web 服务器、网络应用和嵌入式系统等领域得到了广泛应用。它的设计和特性使得开发者能够编写高性能、并发安全的软件,并避免常见的内存错误。

学习 Rust 可以按照以下步骤进行:

  1. 了解基本概念: 开始学习 Rust 之前,先了解一些基本概念,例如所有权、借用、生命周期、模式匹配、结构体等。这些是 Rust 的核心特性,对于编写安全、高效的代码至关重要。
  2. 官方文档: Rust 官方网站(https://www.rust-lang.org/)提供了完整的学习资源,包括官方教程、指南、语言手册、API文档等。从官方文档入手,可以获得最准确和权威的信息。
  3. 在线资源: 除了官方文档,还有许多在线资源可供学习。有很多免费和付费的教程、博客、视频和论坛可以帮助您入门和深入学习 Rust。
  4. 练习: 实践是学习 Rust 的关键。编写简单的程序,尝试解决一些编程问题,逐渐增加难度。通过实际编码来巩固所学的知识。
  5. 参与社区: Rust 拥有一个活跃的社区,参与社区可以让您获得更多经验和建议。在论坛、GitHub 等地方与其他 Rust 开发者交流,提问和回答问题,有助于加深对 Rust 的理解。
  6. 阅读开源项目: 浏览一些开源的 Rust 项目代码,了解其他人是如何使用 Rust 编写代码的。这有助于学习 Rust 最佳实践和一些常见的代码模式。
  7. 学习工具: 学习如何使用 Rust 编译器、包管理器(Cargo)以及其他与 Rust 相关的工具。熟练掌握这些工具可以提高您的开发效率。
  8. 坚持学习: Rust 是一门复杂且功能强大的语言,学习它需要时间和耐心。保持学习的动力,不断尝试新的代码和项目,逐渐提高您的 Rust 技能。

总的来说,学习 Rust 需要一定的时间和实践,但掌握它将带来很多好处。无论您是初学者还是有经验的开发者,学习 Rust 都是值得的,因为它是一种安全、高效和现代化的编程语言。

首先参考教程安装 rust

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
[1 - ERROR] [Thu Jul 20 2023  9:04PM (CST+0800)]  :~/.gradle
 λ curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
info: downloading installer

Welcome to Rust!

This will download and install the official compiler for the Rust
programming language, and its package manager, Cargo.

Rustup metadata and toolchains will be installed into the Rustup
home directory, located at:

  /home/xfhuang/.rustup

This can be modified with the RUSTUP_HOME environment variable.

The Cargo home directory is located at:

  /home/xfhuang/.cargo

This can be modified with the CARGO_HOME environment variable.

The cargo, rustc, rustup and other commands will be added to
Cargo's bin directory, located at:

  /home/xfhuang/.cargo/bin

This path will then be added to your PATH environment variable by
modifying the profile files located at:

  /home/xfhuang/.profile
  /home/xfhuang/.bash_profile
  /home/xfhuang/.bashrc
  /home/xfhuang/.zshenv

You can uninstall at any time with rustup self uninstall and
these changes will be reverted.

Current installation options:


   default host triple: x86_64-unknown-linux-gnu
     default toolchain: stable (default)
               profile: default
  modify PATH variable: yes

1) Proceed with installation (default)
2) Customize installation
3) Cancel installation
>1

info: profile set to 'default'
info: default host triple is x86_64-unknown-linux-gnu
info: syncing channel updates for 'stable-x86_64-unknown-linux-gnu'
781.5 KiB / 781.5 KiB (100 %) 536.6 KiB/s in  1s ETA:  0s
info: latest update on 2023-07-13, rust version 1.71.0 (8ede3aae2 2023-07-12)
info: downloading component 'cargo'
info: downloading component 'clippy'
info: downloading component 'rust-docs'
 13.6 MiB /  13.6 MiB (100 %)   6.6 MiB/s in  2s ETA:  0s
info: downloading component 'rust-std'
 25.4 MiB /  25.4 MiB (100 %)   3.0 MiB/s in 18s ETA:  0s
info: downloading component 'rustc'
 64.0 MiB /  64.0 MiB (100 %)   5.3 MiB/s in 12s ETA:  0s
info: downloading component 'rustfmt'
info: installing component 'cargo'
info: installing component 'clippy'
info: installing component 'rust-docs'
 13.6 MiB /  13.6 MiB (100 %)   3.5 MiB/s in  2s ETA:  0s
info: installing component 'rust-std'
 25.4 MiB /  25.4 MiB (100 %)  14.3 MiB/s in  2s ETA:  0s
info: installing component 'rustc'
 64.0 MiB /  64.0 MiB (100 %)  16.4 MiB/s in  4s ETA:  0s
info: installing component 'rustfmt'
info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'

  stable-x86_64-unknown-linux-gnu installed - rustc 1.71.0 (8ede3aae2 2023-07-12)


Rust is installed now. Great!

To get started you may need to restart your current shell.
This would reload your PATH environment variable to include
Cargo's bin directory ($HOME/.cargo/bin).

To configure your current shell, run:
source "$HOME/.cargo/env"

上面提示需要重新开一个 shell 就可以使用 rust。好的,我们新建一个 shell 窗口,开始 rust 之旅,注意编写 rust 的时候使用 code 非常方便

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57

 [Thu Jul 20 2023  9:08PM (CST+0800)]  :~/workspace/tools/k8s-eggjs  🍣 main 📝 ×13🛤️  ×3via  v20.4.0   took 1s
🌈 cd ~/workspace/
 [Thu Jul 20 2023  9:08PM (CST+0800)]  :~/workspace
🌈 mkdir rust
 [Thu Jul 20 2023  9:08PM (CST+0800)]  :~/workspace
🌈 cd rust
 [Thu Jul 20 2023  9:08PM (CST+0800)]  :~/workspace/rust
🌈 ls

   Nothing to show here
 [Thu Jul 20 2023  9:08PM (CST+0800)]  :~/workspace/rust
🌈 cargo new hello-rust
     Created binary (application) `hello-rust` package
 [Thu Jul 20 2023  9:08PM (CST+0800)]  :~/workspace/rust
🌈 ls
       hello-rust/
 [Thu Jul 20 2023  9:08PM (CST+0800)]  :~/workspace/rust
🌈 cd hello-rust
 [Thu Jul 20 2023  9:09PM (CST+0800)]  :~/workspace/rust/hello-rust  🍣 master 🛤️  ×3 via 🦀 v1.71.0
🌈 cargo run
   Compiling hello-rust v0.1.0 (/home/xfhuang/workspace/rust/hello-rust)
    Finished dev [unoptimized + debuginfo] target(s) in 0.54s
     Running `target/debug/hello-rust`
Hello, world!
 [Thu Jul 20 2023  9:09PM (CST+0800)]  :~/workspace/rust/hello-rust  🍣 master 🛤️  ×4 via 🦀 v1.71.0
🌈 code .
 [Thu Jul 20 2023  9:19PM (CST+0800)]  :~/workspace/rust/hello-rust  🍣 master 🛤️  ×4 via 🦀 v1.71.0  took 1s
🌈 cargo build
    Updating crates.io index
  Downloaded unicode-width v0.1.10
  Downloaded textwrap v0.13.4
  Downloaded smallvec v0.4.5
  Downloaded smawk v0.3.1
  Downloaded ferris-says v0.2.1
  Downloaded 5 crates (99.9 KB) in 4.06s
   Compiling unicode-width v0.1.10
   Compiling smawk v0.3.1
   Compiling smallvec v0.4.5
   Compiling textwrap v0.13.4
   Compiling ferris-says v0.2.1
   Compiling hello-rust v0.1.0 (/home/xfhuang/workspace/rust/hello-rust)
    Finished dev [unoptimized + debuginfo] target(s) in 8.81s
 [Thu Jul 20 2023  9:20PM (CST+0800)]  :~/workspace/rust/hello-rust  🍣 master 🛤️  ×4 via 🦀 v1.71.0  took 8s
🌈 cargo run
   Compiling hello-rust v0.1.0 (/home/xfhuang/workspace/rust/hello-rust)
    Finished dev [unoptimized + debuginfo] target(s) in 0.41s
     Running `target/debug/hello-rust`
 __________________________
< Hello fellow Rustaceans! >
 --------------------------
        \
         \
            _~^~^~_
        \) /  o o  \ (/
          '_   -   _'
          / '-----' \

代码 main.rs

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
use ferris_says::say; // from the previous step
use std::io::{stdout, BufWriter};

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

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

运行 rust 是使用 cargo 命令来操作,cargo run 或者 cargo build。

介绍一下 cargo

Cargo 是 Rust 编程语言的官方包管理器和构建工具。它是 Rust 生态系统的核心组件,用于帮助开发者管理项目的依赖关系、构建代码、运行测试、发布软件等。Cargo 简化了 Rust 项目的管理和构建过程,使开发者能够更轻松地编写和维护 Rust 程序。

以下是 Cargo 的一些主要特点和功能:

  1. 依赖管理: Cargo 允许开发者在项目中定义和管理依赖关系。您可以在项目的"Cargo.toml"文件中列出所需的外部库或其他依赖项,并通过简单的命令来自动下载和更新这些依赖。
  2. 构建工具: Cargo 负责编译 Rust 项目并生成可执行文件或库。它自动处理源代码的编译、链接和构建过程,大大简化了构建流程。
  3. 测试支持: Cargo 提供了内置的测试框架,让您可以编写和运行测试用例,以确保代码的正确性和稳定性。
  4. 文档生成: 通过 Cargo,您可以轻松地为项目生成文档,并在本地查看和浏览代码的文档注释。
  5. 发布工具: 使用 Cargo,您可以将自己的 Rust 程序发布到 crates.io,这是 Rust 官方的包仓库。这样其他人可以方便地下载和使用您的软件。
  6. 版本管理: Cargo 帮助您管理依赖项的版本,并尽可能地解决依赖冲突,以确保您的项目使用的依赖是兼容的。
  7. 多包管理: Cargo 支持多包管理,允许在同一代码库中管理多个 crate(Rust 的模块单位)。这对于复杂的项目和库的开发非常有用。
  8. 自定义脚本: Cargo 允许您在构建过程中运行自定义脚本,以便在构建前后执行额外的任务。

总的来说,Cargo 是 Rust 开发者必不可少的工具之一。它提供了一种简单且一致的方式来管理 Rust 项目,并大大简化了依赖管理、构建和测试等任务。使用 Cargo,您可以更加专注于编写高质量的 Rust 代码而无需花费过多精力在繁琐的构建和依赖管理上。

Licensed under CC BY-NC-SA 4.0
最后更新于 Jan 06, 2025 05:52 UTC
comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计
Caret Up