- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 Read
trait , 许多函数/方法采用 buf: &mut XXX
作为(其中一个)参数并返回 Result<usize>
.例如, read_to_string()
需要 buf: &mut String
作为参数之一并返回 Result<usize>
.
由于我来自多种语言,所谓的现代 语言通常返回 read_string()
的字符串函数调用。 Read
的设计Rust 中的特征让我有点震惊,因为它不返回 字符串,而是将它作为参数传递(类似于 C 或其他更原始的语言)。
我知道返回值(Result
)用于指示读取是否成功,可以将其传递给match
。表达式。 (我以前学过 Lisp 和 Go,所以我不质疑这种设计。)
为什么核心开发者没有把这个 trait 设计成“将字符串连同错误信息一起返回”?
比如为什么不这样设计:
fn read(&mut self) -> Result<String> { ... }
String
还包含长度,因此用户可以通过调用 .len()
来访问长度需要的时候。用户可以将它连接到任何其他 String
if (s)he wishes,但关键是在调用此函数之前无需创建/拥有一个。
像现在这样设计这个 trait 有什么特别的原因吗?
附注我仍在学习 Rust(通过关注 The Rust Programming Language ),并且在阅读第一版的大部分内容后正在阅读第二版。如果上面的代码有任何错误(尤其是在处理生命周期时),请纠正我。
最佳答案
我不知道真正的原因,但有一些优点:
String
的分配方式。您可以从池中取出它,重新使用它等。read_to_string
(或类似的)调用中读取同一个字符串。无需连接字符串String
可以是非空的),这就是为什么 usize
在 Result
签名
fn read_to_string(&mut self) -> Result<String> { ... }
如果来自高级语言,可能看起来更自然,但它无法控制 String
及其分配。
关于rust - 为什么 Read::read_to_string() 不返回字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49707186/
我正在用 Rust 编写套接字服务器,并已实现响应/发送代码。主要问题是 read_to_string 方法会一直工作到连接关闭,而不是直到出现换行符。 例如,在这段代码中, use std::net
这是来自 2nd edition Rust tutorial 的一行: let mut f = File::open(filename).expect("file not found"); 我假设文件
我正在尝试移植我的图书馆 clog到最新的 Rust 版本。 Rust 在上个月发生了很大的变化,所以我对这段代码摸不着头脑,问自己是否真的没有办法以完全链式的方式编写它? fn get_last_c
在 Read trait , 许多函数/方法采用 buf: &mut XXX作为(其中一个)参数并返回 Result .例如, read_to_string() 需要 buf: &mut String
我按照代码从 Rust by Example 打开了一个文件: use std::{env, fs::File, path::Path}; fn main() { let args: Vec
我按照代码从 Rust by Example 打开了一个文件: use std::{env, fs::File, path::Path}; fn main() { let args: Vec
我正在学习 Rust 并且一直在玩这个例子来执行 HTTP GET 请求然后显示数据: extern crate reqwest; use std::io::Read; fn run() -> Res
我读了一个带有 glob 的目录。我可以打印文件路径,但我无法将路径作为字符串获取以在 fs::read_to_string() 中使用它 extern crate glob; use glob::g
我正在尝试实现 Haskell IRC bot tutorial在 Rust 中,我在阅读连接后服务器发送给我的内容时遇到了一些困难。似乎发生的是我连接,从服务器读取 ~5 KB,然后大约 240 秒
我正在尝试实现 Haskell IRC bot tutorial在 Rust 中,我在阅读连接后服务器发送给我的内容时遇到了一些困难。似乎发生的是我连接,从服务器读取 ~5 KB,然后大约 240 秒
我是一名优秀的程序员,十分优秀!