Comprehensive Rust(简体中文) 202412
什么是 Rust? Rust 是一门新的编程语言,它的 1.0 版本于 2015 年发布: • Rust 是一门静态编译语言,其功能定位与 C++ 相似 – rustc 使用 LLVM 作为它的后端。 • Rust 支持多种平台和架构: – x86、ARM、WebAssembly...... – Linux、Mac、Windows...... • Rust 被广泛用于各种设备中: – 固件和引导程序, output, applying formatting described in std::fmt. • format!(format, ..) 的用法与 println! 类似,但它以字符串形式返回结果。 • dbg!(expression) 会记录表达式的值并返回该值。 • todo!() 用于标记尚未实现的代码段。如果执行该代码段,则会触发 panic。 • unreachable!() 用于 (Err(String)). We will cover this type in detail later. 62 将代码复制粘贴到 Rust Playground,然后开始实现 eval。最终结果应能通过测试。使用 todo!() 并 使测试逐个通过可能会很有帮助。您还可以使用 #[ignore] 暂时跳过测试: #[test] #[ignore] fn test_value() { ..0 码力 | 359 页 | 1.33 MB | 10 月前3Real world Rust - Why and how we use Rust in TiKV
perf + flamegraph Rust 2017 Roadmap ● 优化学习曲线 ● 完善工具链和 IDE ● 补全异步和并发编程工具包 ● 有足够的工具和范式开发高性能、健壮的、可扩展的后端服务程序 ● 大多数常用包都达到 1.0 的稳定性 ● ... 总结 ● Rust 是门好语言,可以简单类比成更现代的 C++ ○ 更少的代码写出更安全的程序 ○ 代价是早期更高的学 习成本0 码力 | 29 页 | 506.53 KB | 1 年前3Rust在Substrate 开发框架中的使用
the above features ● WebAssembly 例子: ● Substrate ● Libra Rust in blockchain Why blockchain? 后端: ● 开发语言:Java, Ruby ● 框架:Spring,Rails ● 数据库:Postgres, MySQL ● 自动化测试 ● CI / CD ● 部署云服务:AWS,阿里云0 码力 | 37 页 | 967.22 KB | 1 年前3简谈 Rust 与国密 TLS - 王江桐
所有权系统 Channel 共享状态 所有权 Send && Sync Trait 编译器静态检查 高可靠 1 2 3 ü 无GC、无Runtime、无解释器 ü 零成本抽象 ü 后端LLVM优化 ü 支持C-ABI的FFI方式 ü 支持自定义内存分配器 Rust性能基本和C、C++持平,适用于系统级编程领域 ü 强大编译器 ü 全开源方式运作 ü Cargo ü Crates0 码力 | 44 页 | 3.70 MB | 1 年前3Hello 算法 1.1.0 Rust版
时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 ‧“时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间 增长的“快慢”。 复杂度分析克服了实际测试方法的弊端,体现在以下两个方面。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 第 2 章 复杂度分析 hello‑algo.com 19 ‧ 它可以体现不同数据量下的算法效率,尤其是在大数据量下的算法性能。 Tip 如果你仍对复杂度的概念感到困惑 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 : // === File:0 码力 | 388 页 | 18.50 MB | 1 年前3Hello 算法 1.2.0 简体中文 Rust 版
能内存上的表现就会更好。也 就是说,算法在不同的机器上的测试结果可能是不一致的。这意味着我们需要在各种机器上进行测试,统计 平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种 复杂度分析克服了实际测试方法的弊端,体现在以下几个方面。 第 2 章 复杂度分析 www.hello‑algo.com 19 ‧ 它无需实际运行代码,更加绿色节能。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 ‧ 它可以体现不同数据量下的算法效率,尤其是在大数据量下的算法性能。 Tip 如果你仍对复杂度的概念感到困惑,无须担心,我们会在后续章节中详细介绍。 复杂度分析为我们提 代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 : // === File:0 码力 | 387 页 | 18.51 MB | 9 月前3Hello 算法 1.0.0 Rust版
时间比算法 B 短;但在另一台配置不同的计算机中,可能得到相反的测试结果。这意味着我们需要在各种机 器上进行测试,统计平均效率,而这是不现实的。 另一方面,展开完整测试非常耗费资源。随着输入数据量的变化,算法会表现出不同的效率。例如,在输入 数据量较小时,算法 A 的运行时间比算法 B 短;而在输入数据量较大时,测试结果可能恰恰相反。因此,为 了得到有说服力的结论,我们需要测试各种规模的输入数据,而这需要耗费大量的计算资源。 ‧“时间和空间的增长趋势”表示复杂度分析关注的不是运行时间或占用空间的具体值,而是时间或空间 增长的“快慢”。 复杂度分析克服了实际测试方法的弊端,体现在以下两个方面。 ‧ 它独立于测试环境,分析结果适用于所有运行平台。 第 2 章 复杂度分析 hello‑algo.com 19 ‧ 它可以体现不同数据量下的算法效率,尤其是在大数据量下的算法性能。 � 如果你仍对复杂度的概念感到困惑,无须担心,我们会在后续章节中详细介绍。 段代码,直到这个条件不再满足。 1. for 循环 for 循环是最常见的迭代形式之一,适合在预先知道迭代次数时使用。 以下函数基于 for 循环实现了求和 1 + 2 + ⋯ + ? ,求和结果使用变量 res 记录。需要注意的是,Python 中 range(a, b) 对应的区间是“左闭右开”的,对应的遍历范围为 ?, ? + 1, … , ? − 1 : // === File:0 码力 | 383 页 | 17.61 MB | 1 年前3Rust 语言学习笔记
//[]byte(str1slice) = append([]byte(str1slice),byte('a')) //fmt.Println(str1slice) } } 输出结果: example 1 116 5 11 c type is string testa 你 yes example 2 waht wahtdefghijklm [119 97 for String,这相当于一个运算符重 载,所以你就能通过*获得一个 str 类型。但是我们知道,单独的 str 是不能在 Rust 里直接存在的,因此,我们需要先给他进行&操作取得&str 这个结果。 涵盖大部分&str 和 String 的例子。 fn main() { println!("Hello, world!"); { println!("example value borrowed here after move // compile error println!("{}", s2); } } 输出结果: example 1 "你好 hello str1 test a" "你好 hello str1 test a test3 3" example 2 [1, 2, 3, 4, 100]0 码力 | 117 页 | 2.24 MB | 1 年前3Rust 程序设计语言 简体中文版 1.85.0
本,以判断你尝试运行的示例是否出错。Ferris 也将帮助你区分那些不是意在工作的代码: Ferris 含义 这段代码无法通过编译! 9/562Rust 程序设计语言 简体中文版 这段代码会 Panic! 这段代码的运行结果不符合预期。 在大部分情况,我们会指导你将无法通过编译的代码修改为正确版本。 源代码 生成本书的源码可以在 GitHub 上找到。 译者注:此译本也有 GitHub 仓库,欢迎提交 Issue 是什么,以及这些命令分别的作用。) $ cargo new get-dependencies $ cd get-dependencies $ cargo add rand@0.8.5 trpl@0.2.0 这会将这些包的下载结果缓存起来,因此你之后就不需要再下载它们了。运行完该命令后,你 无需保留 get-dependencies 文件夹。一旦你运行了这些命令,就可以在本书之后所有的 cargo 命令中,使用 --offline 可以使用 cargo build 构建项目。 • 可以使用 cargo run 一步构建并运行项目。 • 可以使用 cargo check 在不生成二进制文件的情况下构建项目来检查错误。 • 有别于将构建结果放在与源码相同的目录,Cargo 会将其放到 target/debug 目录。 使用 Cargo 的一个额外的优点是,不论你使用什么操作系统,其命令都是一样的。所以从现 在开始本书将不再分别为 Linux0 码力 | 562 页 | 3.23 MB | 9 天前3Rust 程序设计语言简体中文版
erris 也将帮助你区分那些不是意在工作的代 码: Ferris 含义 这段代码无法通过编译! 9/600 Rust 程序设计语言 简体中文版 这段代码会 Panic! 这段代码的运行结果不符合预期。 在大部分情况,我们会指导你将无法通过编译的代码修改为正确版本。 源代码 生成本书的源码可以在 GitHub 上找到。 译者注:此译本也有 GitHub 仓库,欢迎提交 Issue Rust 程序设计语言 简体中文版 • 可以使用 cargo run 一步构建并运行项目。 • 可以使用 cargo check 在不生成二进制文件的情况下构建项目来检查错误。 • 有别于将构建结果放在与源码相同的目录,Cargo 会将其放到 target/debug 目录。 使用 Cargo 的一个额外的优点是,不管你使用什么操作系统,其命令都是一样的。所以从现 在开始本书将不再为 Linux line"); println!("You guessed: {guess}"); } 示例 2-1:获取用户猜测并打印的代码 这些代码包含很多信息,我们一行一行地过一遍。为了获取用户输入并打印结果作为输出,我 们需要将 io 输入/输出库引入当前作用域。io 库来自于标准库,也被称为 std : use std::io; # # fn main() { # println!("Guess0 码力 | 600 页 | 12.99 MB | 1 年前3
共 16 条
- 1
- 2