Rust 语言学习笔记FFI(Foreign Function Interface).................................................... 68 6.3.1 rust调用 ffi函数 .................................................................. 68 6.3.2 将 rust 编译成库 .. 是解耦的。 因为 Rust 本身可用于操作系统的开发。 开发者需要自己去定义路径,定义 mod 的层级关系,配合 rust 的默认约定。这 点和 java,go 开发完全不同,在面向 vm 的语言中这些都不需要考虑。 2.Rust 的包管理系统中使用了大量的默认约定,很容易使人头昏脑乱。 而在开发中我们又必须建立模块层级系统,rust 给出了如下方案,在给出了一 些模块的最基本规则外,由开发者更大范围地自定义模块的存在。 crate 的 layout 有一些默认的约定: i.Cargo 约定如果在代表包的 Cargo.toml 的同级目录下包含 src 目录且其 中包含 main.rs 文件的话,Cargo 就知道这个包带有一个与包同名的 bin crate,且 src/main.rs 就是 crate 根。不用在写 cargo.toml 的时候精确到文 件。 ii.另一个约定如果包目录中包含 src/lib.rs,则包带有与其同名的0 码力 | 117 页 | 2.24 MB | 1 年前3
Rust 程序设计语言 简体中文版 1.85.0这行代码完成这个简单程序的所有工作:在屏幕上打印文本。这里有三个重要的细节需要注 意。 首先,println! 调用了一个 Rust 宏(macro)。如果是调用函数,则应输入 println(没有 !)。我们将在第二十章详细讨论宏。现在你只需记住,当看到符号 ! 的时候,就意味着调用 的是宏而不是普通函数,并且宏并不总是遵循与函数相同的规则。 16/562Rust 程序设计语言 简体中文版 如果程序的开头没有使用 use std::io; 引入 io 库,我们仍可以通过把函数调用写成 std::io::stdin 来使用该函数。stdin 函数返回一个 std::io::Stdin 的实例,这是一种代表 终端标准输入句柄的类型。 接下来,代码中的 .read_line(&mut guess) 调用了标准输入句柄上的 read_line 方法,以获 取用户输入。我们还将 &mut guess read_line(&mut guess).expect("Failed to read line"); 不过,过长的代码行难以阅读,所以最好拆开来写。通常来说,当使用 .method_name() 语法 调用方法时引入换行符和空格将长的代码行拆开是明智的。现在来看看这行代码干了什么。 之前提到了 read_line 会将用户输入附加到传递给它的字符串中,不过它也会返回一个类型为 Result 的值。Result0 码力 | 562 页 | 3.23 MB | 27 天前3
Rust 程序设计语言简体中文版这行代码完成这个简单程序的所有工作:在屏幕上打印文本。这里有四个重要的细节需要注 意。首先 Rust 的缩进风格使用 4 个空格,而不是 1 个制表符(tab)。 第二,println! 调用了一个 Rust 宏(macro)。如果是调用函数,则应输入 println (没 有! )。我们将在第十九章详细讨论宏。现在你只需记住,当看到符号 ! 的时候,就意味着调 用的是宏而不是普通函数,并且宏并不总是遵循与函数相同的规则。 如果程序的开头没有使用 use std::io; 引入 io 库,我们仍可以通过把函数调用写成 std::io::stdin 来使用函数。stdin 函数返回一个 std::io::Stdin 的实例,这代表终端标 准输入句柄的类型。 代码的下一部分,.read_line(&mut guess) ,调用 read_line 方法从标准输入句柄获取用户 输入。我们还将 &mut guess read_line(&mut guess).expect("Failed to read line"); 不过,过长的代码行难以阅读,所以最好拆开来写。通常来说,当使用 .method_name() 语法 调用方法时引入换行符和空格将长的代码行拆开是明智的。现在来看看这行代码干了什么。 之前提到了 read_line 会将用户输入附加到传递给它的字符串中,不过它也会返回一个类型 为 Result 的值。0 码力 | 600 页 | 12.99 MB | 1 年前3
Hello 算法 1.1.0 Rust版本优秀的著作。 衷心感谢我的父母,正是你们一直以来的支持与鼓励,让我有机会做这件富有趣味的事。 0.2 如何使用本书 Tip 为了获得最佳的阅读体验,建议你通读本节内容。 0.2.1 行文风格约定 ‧ 标题后标注 * 的是选读章节,内容相对困难。如果你的时间有限,可以先跳过。 ‧ 专业术语会使用黑体(纸质版和 PDF 版)或添加下划线(网页版),例如数组(array)。建议记住它们, 以便阅读文献。 案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 CPU 和 GPU 执行算法。这样一来,我们就能把生活中的问题 转移到计算机上,以更高效的方式解决各种复杂问题。 Tip 如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将引导你 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结构与算法是独立于编程语言的。正因如此,本书得以提供基于多种编程语言的实现。 约定俗成的简称 在实际讨论时,我们通常会将“数据结构与算法”简称为“算法”。比如众所周知的 LeetCode 算法题 目,实际上同时考查数据结构和算法两方面的知识。 1.3 小结 ‧ 算法在日常0 码力 | 388 页 | 18.50 MB | 1 年前3
Hello 算法 1.2.0 简体中文 Rust 版本优秀的著作。 衷心感谢我的父母,正是你们一直以来的支持与鼓励,让我有机会做这件富有趣味的事。 0.2 如何使用本书 Tip 为了获得最佳的阅读体验,建议你通读本节内容。 0.2.1 行文风格约定 ‧ 标题后标注 * 的是选读章节,内容相对困难。如果你的时间有限,可以先跳过。 ‧ 专业术语会使用黑体(纸质版和 PDF 版)或添加下划线(网页版),例如数组(array)。建议记住它们, 以便阅读文献。 案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 CPU 和 GPU 执行算法。这样一来,我们就能把生活中的问题 转移到计算机上,以更高效的方式解决各种复杂问题。 Tip 如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将引导你 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结构与算法是独立于编程语言的。正因如此,本书得以提供基于多种编程语言的实现。 约定俗成的简称 在实际讨论时,我们通常会将“数据结构与算法”简称为“算法”。比如众所周知的 LeetCode 算法题 目,实际上同时考查数据结构和算法两方面的知识。 1.3 小结 ‧ 算法在日常0 码力 | 387 页 | 18.51 MB | 10 月前3
Hello 算法 1.0.0 Rust版本优秀的著作。 衷心感谢我的父母,正是你们一直以来的支持与鼓励,让我有机会做这件富有趣味的事。 0.2 如何使用本书 � 为了获得最佳的阅读体验,建议你通读本节内容。 0.2.1 行文风格约定 ‧ 标题后标注 * 的是选读章节,内容相对困难。如果你的时间有限,可以先跳过。 ‧ 重要专有名词及其英文翻译会用「」 括号标注,例如「数组 array」 。建议记住它们,以便阅读文献。 ‧ 案。从数据结构与算法的角度看,这种方法本质上是“贪心”算法。 小到烹饪一道菜,大到星际航行,几乎所有问题的解决都离不开算法。计算机的出现使得我们能够通过编程 将数据结构存储在内存中,同时编写代码调用 CPU 和 GPU 执行算法。这样一来,我们就能把生活中的问题 转移到计算机上,以更高效的方式解决各种复杂问题。 � 如果你对数据结构、算法、数组和二分查找等概念仍感到一知半解,请继续往下阅读,本书将 积木组织形式,包括形状、大小、连接方式等 算法 把积木拼成目标形态的一系列操作步骤 输出数据 积木模型 值得说明的是,数据结构与算法是独立于编程语言的。正因如此,本书得以提供基于多种编程语言的实现。 � 约定俗成的简称 在实际讨论时,我们通常会将“数据结构与算法”简称为“算法”。比如众所周知的 LeetCode 算法题目,实际上同时考查数据结构和算法两方面的知识。 1.3 小结 ‧ 算法在日常生0 码力 | 383 页 | 17.61 MB | 1 年前3
Comprehensive Rust(简体中文) 202412128 23.1 生命周期注解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 128 23.2 函数调用中的生命周期 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 129 23.3 数据结构中的生命周期 . . . . . . 207 37.1.1 使用 Bindgen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207 37.1.2 调用 Rust . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209 37.2 与 C++ 交互 . . . println!("digest: {digest:?}"); } 根据 Rust RFC Book 这些变量在使用时是内联 (inlined) 的。 在编译时只能调用标记为“const”的函数以生成“const”值。不过,可在运行时调用“const”函数。 • Mention that const behaves semantically similar to C++'s constexpr •0 码力 | 359 页 | 1.33 MB | 10 月前3
Rust 是否需要另⼀种“⾊彩”的 Future? - 郭⼦兴取消 Future 的困境 Future 的取消具有传染性,outer Future 实 现必须确保将 cancel ⾏为传递⾄ inner Future,当前 Future 不提供这样的约定。 async fn foo(buf: &mut [u8]) { async { async { async {0 码力 | 19 页 | 7.77 MB | 1 年前3
WebAssembly 简介 - 陈思衡host 调用。 Host 可以把自己的 function 通过 “import“ 提供给 wasm 调用。 function WebAssembly 简介 Photo / image / chart Wasm 实例 WebAssembly 简介 WASI 简介 WebAssembly System Interface (简称 WASI),它定义了一组 WASM 模块可以调用的系统调用接口。WASI 模块可以调用的系统调用接口。WASI 的目的是让 WASM 模块可以访问底层系统的功能,比如文件系统、网络等。这使得 WASM 可以作为一个更广泛的 运行时,不仅仅局限于浏览器环境。WASI 当前定义了一组 POSIX 兼容的系统调用,让 WASM 模块可以访问文件系 统。未来 WASI 还会加入更多系统接口,为 WASM 提供更广泛的系统访问能力。 WebAssembly 介绍 Photo / image / chart 利用本身 Async 机制 自行实现 Async Runtime Async 的 Wasm • 在 wasm 中把 future 存入固定内存处。 • 导出 poll 函数给 host 调用。 • 把 host function 包装成自定义 Future。 • 实现简单 利用本身 Async 机制 优点 • 方案不通用(wasm 局限于某一种语言) • 无法与现有生态配合0 码力 | 24 页 | 773.46 KB | 1 年前3
Await-Tree Async Rust 可观测性的灵丹妙药 - 赵梓淇Future 灵活的可组合性 • 任意定制 Poll 的执行逻辑 (Join / Select / Timeout) • 动态的调用关系 • 痛点:观测与调试工具无法理解灵活的执行逻辑 • Backtrace 不够直观 ( 调用栈 -> 调用树 ) • Tracing 无法追踪调用关系的变化 Async Rust 观测与调试的痛点 Async Rust 回顾 • 特性:用户态调度的无栈协程 •0 码力 | 37 页 | 8.60 MB | 1 年前3
共 24 条
- 1
- 2
- 3













