35得票3回答
第一个显式生命周期指定符在impl上是什么意思?

impl 上有三个不同的生命周期限定符: impl<'a> Type<'a> { fn my_function(&self) -> &'a u32 { self.x } } Type<'a> 表示在...

35得票1回答
由于存在冲突要求,无法推断自动引用的适当生命周期

我在我的代码中有一个特定函数的终身问题。我正在遵循一个教程,试图学习Rust和SDL。该教程略有陈旧,自编写以来SDL库已经发生了变化,因此我一边跟进,一边将其调整到最新版本的Rust-SDL。 生命周期问题出现在这个函数中:pub fn ttf_str_sprite(&mut se...

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

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

32得票5回答
为什么静态数组不需要被释放?

我想知道为什么静态数组不需要被释放?我知道当创建动态数组,例如 int *p; p = malloc(10*sizeof(int)); 我们需要使用以下方式释放已分配的内存:free(p); 对于函数中的静态数组,当被调用的函数完成时,静态数组将自动释放。我不理解的是:在使用像这样的函数返回静...

32得票1回答
在Rust中,生命周期的子类型关系很难理解。

我觉得自己很傻,因为我已经多次浏览了Rust文档中的标记部分以及关于子类型和变异性的维基百科文章,但对生命周期子类型关系的理解并没有提高。 我想我只是习惯了“典型的面向对象编程风格”中的子类型关系,例如“Cat <: Animal”表示“Cat是Animal的一个子类型”,其中“S是T...

31得票2回答
在Rust中,"Box<Fn() + Send + 'static>"是什么意思?

Box&lt;Fn() + Send + 'static&gt; 在 Rust 中是什么意思? 在我阅读高级类型章节时偶然发现了这个语法。 Send 是一个 trait,但是将生命周期(在这种情况下为'static)与 trait(Send)相加意味着什么?另外,Fn() 是什么意思?

30得票2回答
为什么要求绑定 `T: 'a` 才能存储引用 `&'a T`?

给定以下代码: struct RefWrapper&lt;'a, T&gt; { r: &amp;'a T, } 当编译器出现以下错误时: error: the parameter type T may not live long enough consider adding...

29得票2回答
<'a, 'b: 'a>的意思是'b的生命周期必须比'a的生命周期长吗?

我希望实现一个类似于标准库定义的调试 构建器 的构建器。它们使用类似以下结构定义: struct DebugFoo&lt;'a, 'b: 'a&gt; { fmt: &amp;'a mut std::fmt::Formatter&lt;'b&gt; } 由于我不理解表单&lt;'...

29得票3回答
为什么在使用sort_by_key对向量进行排序时,不能使用返回引用的关键函数?

我正在尝试使用返回向量中字符串的引用的键函数对Vec&lt;String&gt;进行排序。一个人为的示例是使用身份函数作为键函数(当然是无用的,但这是复制我的问题的最小示例): fn key(x: &amp;String) -&gt; &amp;String { x } fn ex...

28得票2回答
当函数返回一个serde Deserialize类型时,如何解决生命周期错误?

我使用serde和serde_json 1.0来解码从base64字符串中获取的数据: fn from_base64_str&lt;T: Deserialize&gt;(string: &amp;str) -&gt; T { let slice = decode_config(str...