Tag: rust

无法从关闭返回值中移出借来的内容

我在一个中型项目上发现了这个问题。 下面的片段是这个问题的最小摘要。 在下面的代码中 , 我试图将枚举变量的列表映射为一组不同的枚举变量。 我使用一个闭包 , 这样我可以捕获一个可变引用到 my_list , 它是一个源枚举变体的列表。 然后将闭包保存在 MyType 实例中 , 以便以后调用 , 并将结果用于其他方法。 为了保持关闭, 我在 Box 中使用了 FnMut 特征。 我也把它包在 Option 中 , 这样我就可以在实例创建之后设置关闭。 我从这里提出的问题中得出了一点结论 : 使用盒装还是未装箱的 use std::collections::HashSet; enum Numbers { One,…

Read More »

如何实现具有特性对象成员的结构的调试特性?

我的目标是打印具有 trait 对象成员的结构的内容 , 但我无法找到如何告诉 Rust 编译器成员也实现了其他特性 , 如 Display 或 Debug 。 例如 , 在下面的程序中 , 我想打印 S2 ( 和 S1 ) 的结构以供比较 , 但我在 fmt 的实现中遇到了瓶颈。 trait Tr {} impl Tr for usize {} impl Tr…

Read More »

延迟未来返回

我正在重写 Forward 的未来从 Stream 到 Sink , 添加接收新项目的超时。 我使用 Forward 结构中的 Delay 未来来跟踪超时 , 但结果总是 Error(Shutdown) 。 从 timer::Error 文档中我看到 , 只有在放弃未来时才应返回 , 但不应返回 , 因为它仍然包含在主要结构中。 这是一个最小的测试示例 , 我从中得到了相同的结果。 extern crate tokio; // 0.1.20 use std::thread::sleep; use std::time::{Duration,…

Read More »

在 Substrate 运行时箱中定义的类型日志在哪里 ?

看看这一执行情况 : impl consensus::Trait for Runtime { type Log = Log; type SessionKey = AuthorityId; // The Aura module handles offline-reports internally // rather than using an explicit report system. type InherentOfflineReport = (); } Log 是如何定义的? 没有…

Read More »

利用夜间尘埃生产

有人能给我解释一下晚上的”生产”是怎么回事吗? 我想使用 PyO3 的板条箱 , 它使用的专业化特性需要夜间锈色。 使用夜间版本的 Rust 是否准备好了 ? 我知道 , 在未来的版本中可能会发生一些事情 , API 可能会发生变化 , 但就质量 / 测试 / 生产准备状态而言 , 夜间安全吗 ? 从 Rust 用户的这个线程来看 , 只要我限制了我的非稳定功能的使用 ( 例如 只是为了专业化 ? EN From: Using Rust…

Read More »

允许失败的机制是什么 ?

例如 : extern crate failure; use std::fs::File; fn f() -> std::result::Result<(), failure::Error> let _ = File::open("test")?; "123".parse::<u32>()?; Ok(()) } 什么技术允许 failure::Error 能够表示 std::io::Error 、解析错误和任何其他自定义错误类型 ? 重建这种能力的最小实现是什么 ? EN From: What is the mechanism that allows failure::Error to represent…

Read More »

在迭代同一文件的行后 , 对文件字节的迭代是空的

我正在创建类似于 wc 命令的东西。 计数行似乎运行良好 , 但计数字节总是返回 0 。 计数单词也不起作用 ; 输出似乎”挂起”,好像它在等待什么。 我意识到它的制作方式 ( 三遍阅读文件 ) 并不是最理想的方式 , 但我只想要一个工作简单的例子 use std::fs::File; use std::io::{BufRead, BufReader, Read}; fn main() { let arg = &std::env::args() .nth(1) .expect(“No file operand found”) .to_owned(); let…

Read More »

如何按字母顺序排列字符串向量?

我想按字母顺序排列一个字符串向量 fn main() { let mut vec = Vec::new(); vec.push("richard"); vec.push("charles"); vec.push("Peter"); println!("{:?}", vec); } 我尝试了 println!(“{:?}”, vec.sort()); 和 println!(“{}”, vec.sort_by(|a,b| b.cmp(a)));, 两个响应都是 () 。 我期待以下结果 ["charles", "Peter", "richard"]EN From: How do I sort a vector of Strings…

Read More »

如何访问特性默认方法定义中的结构字段 ?

我看到了一些相关的问题 ( 比如这个和这个 ) , 但我希望我的默认方法用例是非常独特的 , 可以问一个稍微不同的问题。 下列最小示例起作用并输出 “Sheriff Ted” shot “Billy the Kid”!: #[derive(Debug)] struct Actor { name: String, } fn main() { let cop = Actor { name: String::from("Sheriff Ted"), }; let robber = Actor…

Read More »

如何在多个"编码器"之间共享一个易变的作者?

如何在多个”编码器”之间共享一个易变的作者? 我正在实现一个数据压缩接口 : pub trait NumericEncoder<V> { fn encode(&mut self, value: V) -> io::Result<()>; } 编码器可以在某种输出中编码一些数字 , 其中输出可能是流 ( 文件 ) 、字节缓冲区 , 甚至是另一个编码器。 可以这样调用实现 : let f = File::create(“out”).unwrap(); // Delta encoder whose data is run-length-compressed let…

Read More »