Voldemort – he who must not be named – types是名称无法在源代码中写下的类型.在Rust中,闭包有这样的类型,因为编译器generates a new internal type for each closure.接受闭包作为函数参数的唯一方法是接受一个泛型类型(通常称为F),它被限定为Fn()(或类似)特征.

Rust中的引用始终包含生存期参数,即使该生存期通常可以忽略.生命周期不能明确命名,因为它们代表某种复杂的编译器内部作用域.与生命周期交互的唯一方法是使用泛型参数(通常称为'a),它代表任何生命周期(可能由另一个生命周期限定).当然,有'static个可以命名为can个,但这是一个特例,与我的论点没有冲突.

So: are Rust references Voldemort types?或者我误解了"伏地魔类型"这个词或者铁 rust 的含义?

推荐答案

作为一个对该领域没有特别深入了解的人:

我想答案可能是:technically yes, but it's overly reductive.有点像说"所有类型都是整数数组";我是说,yes,但这样做会失go 一些有用的语义区分.

伏地魔的类型是usually,用来向用户隐藏实现类型,要么因为它只是一个临时的,要么你不应该使用函数描述的接口以外的任何东西.参考文献是technically个不可测量的整体,但它从来没有限制过你.我的意思是,即使你指定了具体的生命周期,我也不认为你能用它做任何有意义的事情(除了在函数中进行slightly个更严格的生命周期判断).

Rust相关问答推荐

属性宏修改派生宏的派生实现

将内部类型作为参数的泛型 struct 上的方法

如何将`Join_all``Vec<;Result<;Vec<;Foo&>;,Anywhere::Error&>;`合并到`Result<;Vec<;Foo&>;,Anywhere::Error&>;`

铁 rust 中的泛型:不能将`<;T作为添加>;::Output`除以`{Float}`

如果包名称与bin名称相同,并且main.ars位于工作区的同一 crate 中,则无法添加对lib.ars的依赖

异步函数返回的future 生存期

我如何使用AWS SDK for Rust获取我承担的角色的凭据?

为什么&;mut buf[0..buf.len()]会触发一个可变/不可变的borrow 错误?

在铁 rust 中,如何一次只引用几件事中的一件?

使用Rust WASM读取文件

为什么RefCell没有与常规引用相同的作用域?

从 rust 函数返回 &HashMap

如何为整数切片定义一个带有额外函数的特性别名?

有什么方法可以通过使用生命周期来减轻嵌套生成器中的当生成器产生时borrow 可能仍在使用错误?

为什么 i32 Box 类型可以在 Rust 中向下转换?

&str 的编译时拆分是否可能?

LinkedList::drain_filter::drop 中 DropGuard 的作用是什么?

在空表达式语句中移动的值

Rust 跨同一文件夹中文件的可见性

将 (T, ()) 转换为 T 安全吗?