27得票1回答
为什么引入dyn语法?

在 Rust 1.27.0 中引入了一种新的语法 - 添加了 dyn 关键字。 // old => new Box<Foo> => Box<dyn Foo> &Foo => &dyn Foo &mut Foo ...

13得票4回答
如何在向量中连接所有期货而不像join_all函数那样在失败时取消连接?

我有一个由调用async函数创建的future的Vec。在将所有futures添加到向量之后,我想要等待整个集合,获取结果的列表或每个完成的回调。 我可以简单地循环或迭代遍历future向量,并在每个future上调用.await,这样可以正确处理错误并且不会使futures::future...

20得票1回答
如何在BTreeMap/BTreeSet中查找下一个较小的键?

如果我正确理解B树,那么在对键进行搜索时,可以很容易地在对数时间内找到并返回该键。如果该键不存在,则可以返回下一个较小和较大的键; 如果将其插入,则返回给定键的相邻键。 这种功能是否已经存在? 通过当前的API实现这个功能的一种可能但复杂的方式是插入该键,然后获取到这个键的迭代器,以便我们...

12得票4回答
如何从具有更高级别的 trait bound trait 返回关联类型?

我有一个特质,其中包含反序列化关联类型的函数。然而,这个关联类型需要调用者决定生命周期,因此我使用了一个单独的特质,使用更高秩的特质约束,以便它可以被任何生命周期反序列化。 我需要使用返回此关联类型的闭包。 我有以下代码来实现这一点:#![allow(unreachable_code)] ...

12得票3回答
我应该使用libc::c_char还是std::os::raw::c_char?

我正在为Rust编写一个FFI包装器。我看到了libc::c_char和std::os::raw::c_char的用法。我的C语言知识非常有限,不知道这两者之间是否有区别。如果我想通过cffi将字符串暴露给Python,应该使用哪个?

7得票2回答
如何使用生命周期边界来解决“引用必须对静态生命周期有效”的问题

我是一名Rust初学者,但我无法编译以下代码。 我的目标是将几个trait存储在一个向量中,而每个trait也应该对借用变量具有只读访问权限。 我猜想我必须使用“生命周期限制”这样的方法,就像thread中讨论的那样,因为如果我注释掉60-68行,代码可以编译通过。 请问是否有人能够解释如...

24得票1回答
如何在宏中调用 self 的方法?

macro_rules! call_on_self { ($F:ident) => { self.$F() } } struct F; impl F { fn dummy(&self) {} fn test(&self) ...

38得票2回答
套嵌匹配在 Rust 中是否是一种不良实践?

我有一个get_url_content函数,不太在意错误(只是一个测试)。它返回一个Option<String>。extern crate hyper; use std::io::Read; use hyper::client::Client; fn get_url_conte...

24得票1回答
为什么比较两个看起来相等的指针使用 == 可以返回 false?

我希望测试两个类型为Rc<Trait>的对象是否包含同一实例的具体类型,因此我比较Rc内部对象的指针是否相等。如果所有代码都在同一个crate中,则似乎能正确工作,但涉及多个crates时就会失败。 在Rust 1.17中添加了函数Rc::ptr_eq,但从Rust 1.31开始...

10得票3回答
循环遍历日期范围

在Python3中,我可以像这样循环遍历一段日期范围 import datetime dt0 = datetime.datetime(2017, 1, 1, 0, 0, 0) dt1 = datetime.datetime(2017, 1, 5, 0, 0, 0) dt = dt0 whi...