Questions tagged «rust»

Rust是一种没有垃圾回收器的系统编程语言,主要关注三个目标:安全性,速度和并发性。使用此标签可解决有关用Rust编写的代码的问题。对于特定于代码的问题,请使用特定于版本的标签,例如需要使用特定版本的代码,例如[rust-2018]。对[rust-cargo]和[rust-macros]等子主题使用更具体的标签。

3
Rust有什么代替垃圾收集器?
我知道Rust没有垃圾收集器,并且想知道当绑定超出范围时如何释放内存。 因此,在此示例中,我了解到Rust超出范围时,Rust回收分配给“ a”的内存。 { let a = 4 } 我遇到的问题是,首先是如何发生的,其次,这不是一种垃圾收集吗?它与“典型”垃圾收集有何不同?
95 rust 



1
Rust中的“肥胖指针”是什么?
我已经在多个上下文中阅读过“胖指针”一词,但是我不确定它的确切含义以及何时在Rust中使用它。该指针似乎是普通指针的两倍,但我不明白为什么。它也似乎与特征对象有关。
91 pointers  rust 

9
为什么设计一种具有独特匿名类型的语言?
作为C ++ lambda表达式的功能,这一直困扰着我:C ++ lambda表达式的类型是唯一且匿名的,我根本无法写下来。即使我创建了两个在语法上完全相同的lambda,也将结果类型定义为不同的。结果是:a)lambda只可以传递到允许编译时传递的模板函数,不可言传的类型与对象一起传递,以及b)lambda仅在通过类型擦除它们之后才有用std::function<>。 好的,但这只是C ++的工作方式,我准备将其编写为该语言的令人讨厌的功能。但是,我只是了解到Rust似乎也做同样的事情:每个Rust函数或lambda都有一个唯一的匿名类型。现在我在想:为什么? 因此,我的问题是:从语言设计者的角度来看,将唯一的匿名类型的概念引入语言的优势是 什么?

1
用单撇号表示的Rust类型是什么?
我在Rust中遇到了许多用单撇号表示的类型: 'static 'r 'a 那撇号的意义是什么?也许是引用(&)的修饰符?特定于引用的泛型类型?我不知道隐藏在哪里的文档。
89 rust 

1
什么是非词汇寿命?
Rust具有与非词汇生存期相关的RFC,该RFC已被批准长时间使用该语言来实现。最近,Rust对此功能的支持已改进很多,并被认为是完整的。 我的问题是:非词汇寿命到底是什么?


1
如何将整数转换为字符串?
我无法编译将类型从整数转换为字符串的代码。我正在运行Rust for Rubyists教程中的示例,该示例具有各种类型转换,例如: "Fizz".to_str()和 num.to_str()(其中num是整数)。 我认为大多数(如果不是全部)这些to_str()函数调用已被弃用。当前将整数转换为字符串的方法是什么? 我得到的错误是: error: type `&'static str` does not implement any method in scope named `to_str` error: type `int` does not implement any method in scope named `to_str`

7
如何创建HashMap文字?
如何在Rust中创建HashMap文字?在Python中,我可以这样做: hashmap = { 'element0': { 'name': 'My New Element', 'childs': { 'child0': { 'name': 'Child For Element 0', 'childs': { ... } } } }, ... } 在Go中这样: type Node struct { name string childs map[string]Node } hashmap := map[string]Node { "element0": Node{ "My New Element", map[string]Node { 'child0': …
87 hashmap  rust 

5
从Option <String>转换为Option <&str>
通常,我是Option&lt;String&gt;从计算中获得的,我想使用此值或默认的硬编码值。 使用整数将是微不足道的: let opt: Option&lt;i32&gt; = Some(3); let value = opt.unwrap_or(0); // 0 being the default 但是使用aString和a &amp;str,编译器会抱怨类型不匹配: let opt: Option&lt;String&gt; = Some("some value".to_owned()); let value = opt.unwrap_or("default string"); 此处的确切错误是: error[E0308]: mismatched types --&gt; src/main.rs:4:31 | 4 | let value = opt.unwrap_or("default string"); | ^^^^^^^^^^^^^^^^ | | | expected struct …
85 rust 

1
何时应在Rust中使用内联?
Rust具有“内联”属性,可用于以下三种口味之一: #[inline] #[inline(always)] #[inline(never)] 什么时候应该使用它们? 在Rust参考中,我们看到一个内联属性部分, 编译器会根据内部启发法自动内联函数。不正确的内联函数实际上会使程序变慢,因此应谨慎使用。 在Rust内部知识论坛中,huon在指定inline方面也很保守。 但是我们在Rust源中看到了很多用法,包括标准库。许多内联属性被添加到单行函数中,对于编译器来说,根据参考文献,通过启发式方法可以很容易地发现并优化它们。实际上不需要那些吗?

1
Rust的Option类型的开销是多少?
在Rust中,引用永远不能为null,因此在实际需要null(例如链表)的情况下,请使用以下Option类型: struct Element { value: i32, next: Option&lt;Box&lt;Element&gt;&gt;, } 与简单指针相比,就内存分配和取消引用的步骤而言,这涉及多少开销?在编译器/运行时中,是否有一些“魔术”可以使Option成本降低,或者比Option使用非核心库使用相同的enum构造自己实现或通过将指针包装在向量中实现成本更低?



By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.