14得票2回答
我该如何创建一个proc_macro_attribute?

现在proc_macros已经稳定,那么如何创建这样一个东西呢? 从我所见,有一种选项是在fn whatsitsname(attrs: TokenStream, code: TokenStream) -> TokenStream上放置#[proc_macro_attribute]注释,...

8得票2回答
如何在Rust中使用hyper、tokio和futures设置HTTP请求的超时时间?

如何在使用异步Hyper(>=0.11)时为HTTP请求设置超时时间? 以下为没有超时时间的代码示例: extern crate hyper; extern crate tokio_core; extern crate futures; use futures::Future; u...

8得票1回答
Rust中方法链中的临时变量生命周期

我正在尝试通过将Rust的生命周期规则与我更熟悉的C++中的类似概念进行比较来学习它。大多数情况下,我的直觉非常好,我可以理解这个规则。然而,在以下情况下,我不确定我的理解是否正确。 在Rust中,临时值的生命周期是其语句的结尾,除非最后一个临时值使用let绑定到名称上。 struct A...

9得票1回答
在Warp中是否有一种方法可以将验证作为过滤器的一部分来完成?

我已经定义了一个路由和端点函数,并注入了一些依赖项。 pub fn route1() -> BoxedFilter<(String, ParamType)> { warp::get() .and(warp::path::param()) ...

7得票2回答
如何在构造函数中调用结构体方法?

我对 Rust 相对较新,遇到了一个与其他语言编写构造函数的做法不同的问题。我有一个叫做 S3Logger 的结构体,它会创建一个磁盘上的临时文件,当文件中写入一定量的数据后,会将其上传到 S3 然后旋转到另一个文件。 我希望我的 new 函数使用这个类的一个方法 gen_new_file,...

7得票1回答
如何使用futures.rs和Redis PubSub实现阻塞调用的future流?

我正在尝试创建一个系统,使我的应用程序能够从Redis PubSub频道接收流数据并处理它。我正在使用的Redis驱动程序以及我看到的所有其他Rust Redis驱动程序,都使用阻塞操作从通道获取数据,只有在接收到数据时才返回值: let msg = match pubsub.get_mes...

7得票3回答
在函数作用域内创建的引用是否可以返回?

我有一个非常简单的程序: fn f<'a>() -> &'a i32 { &1 } fn main() { println!("{}", f()); } 它无法编译(部分输出被省略): $ rustc test.rs test.rs:...

12得票1回答
Rust生命周期是否影响编译程序的语义?

我正在尝试理解Rust中的生命周期,并想知道它们是否仅仅是一种安全措施(以及在错误情况下如何保证安全性的通信方式),或者是否存在不同生命周期选择实际上会改变程序运行方式的情况,即生命周期是否对编译后的程序产生语义差异。 这里所说的“生命周期”指的是我们包含在代码中的所有繁琐的小标记,如' a...

15得票1回答
Rust如何处理将f64转换为i64的舍入问题?

我在Go和Dart中进行了一些货币处理的测试。基本上,我认为处理货币的最佳方法是将双精度转换为整数,以便所有计算都使用整数进行,并且我认为这是被接受的方式。然而,不同的语言对于转换为整数的处理方式是不同的。例如,Go截断双精度值,因此我认为需要添加一个舍入因子来进行补偿。使用Rust,我发现直...

38得票7回答
如何测试一个值是否在范围内?

我希望能够创建一个Range,并测试变量是否包含在该范围内。类似于这样:fn main() { let a = 3..5; assert!(a.contains(4)); } 目前,我唯一明显的想法是使用Iterator::any。这样做很丑陋,因为它会将一个O(1)的操作变成...