34得票2回答
这个实例如何看起来超越了自己的参数生命周期?

在遇到下面的代码之前,我一直认为类型生命周期参数中的lifetime将始终超过其自身的实例。换句话说,给定一个foo:Foo<'a>,那么'a将始终超过foo。然后,@Luc Danton(Playground)向我介绍了这个反驳论证的代码:#[derive(Debug)] str...

24得票3回答
为什么生命周期名称会出现在函数类型的一部分?

我相信,这个函数声明告诉Rust函数的输出生命周期与其s参数的生命周期相同:fn substr<'a>(s: &'a str, until: u32) -> &'a str; ^^^^ 我认为编译器只需要知道这个(1):fn substr(s...

37得票2回答
C++ - 使用常量引用来延长临时对象的成员,是合法的还是未定义的行为?

考虑类似于这样的东西:#include <iostream> struct C { C(double x=0, double y=0): x(x) , y(y) { std::cout << "C ctor " << x <&...

7得票2回答
调用`drop`后,移动的变量仍在借用中?

fn main() { let mut x: Vec<&i32> = vec![]; let a = 1; x.push(&a); drop(x); // x.len(); // error[E0382]: use of mo...

17得票2回答
当返回使用StdinLock时的结果时,为什么stdin的借用被保留了?

考虑下面的函数:use std::io::{BufRead, stdin}; fn foo() -> usize { let stdin = stdin(); let stdinlock = stdin.lock(); stdinlock .li...

19得票2回答
std::move和临时对象的生命周期

这段代码的执行顺序能有人解释一下吗? struct Foo { ~Foo() { std::cout << "1"; } }; int main() { const Foo& bar = Foo(); const Foo...

24得票4回答
为什么 Rust 结构体可以借用 "&'a mut self" 两次,但 trait 不行?

以下 Rust 代码编译成功: struct StructNothing; impl<'a> StructNothing { fn nothing(&'a mut self) -> () {} fn twice_nothing(&'a m...

43得票8回答
动态内存分配和构造函数

与new和delete表达式不同,当为对象分配内存时,std::malloc不会调用构造函数。在这种情况下,我们应该如何创建一个对象,以便也能调用构造函数呢?

7得票2回答
令人困惑的借用检查器信息:"生命周期不匹配"

我最近遇到了一个我从未见过的借用检查器消息,我正在努力理解它。以下是重现它的代码(简化的实际示例更加复杂) - playground: fn foo(v1: &mut Vec<u8>, v2: &mut Vec<u8>, which: bool) { ...

10得票1回答
auto&& 如何延长临时对象的生命周期?

下面的代码展示了我的担忧: #include <iostream> struct O { ~O() { std::cout << "~O()\n"; } }; struct wrapper { O const&am...