相关疑难解决方法(0)

Rust的`String`和`str`之间有什么区别?

为什么Rust有StringstrString和之间有什么区别str?什么时候使用String而不是str反之亦然?其中一个被弃用了吗?

string rust

341
推荐指数
13
解决办法
4万
查看次数

在尝试从向量中返回值时,获取错误"错误:特征`core :: marker :: Sized`未实现"

我试图使用以下代码返回向量的值.我收到错误消息.

fn merge<'a>(left: &'a [i32], right: &'a [i32]) -> [i32] {
    let mut merged: Vec<i32> = Vec::new();
    // push elements to merged
    *merged
}
Run Code Online (Sandbox Code Playgroud)

test.rs:19:52:19:57错误:core::marker::Sized类型[i32] test.rs:19 fn merge <'a>(左:&'a [i32],右:&'a [i32] ) - > [i32] {

我不能为我的生活找到我如何解决这个问题

rust

8
推荐指数
1
解决办法
2144
查看次数

为什么堆栈上的项目必须具有编译时已知的大小?

我明白为什么它们必须具有恒定的大小,但我不明白为什么必须在编译时知道该大小。即使 C 也允许在堆栈上使用可变长度数组。这个限制对 Rust 有什么帮助?

rust

8
推荐指数
1
解决办法
499
查看次数

Rust 字符串中的“可增长”和“可变”有什么区别?

我正在阅读《Rust 编程语言》。文档将 a 定义String为“可增长”:

UTF-8 编码的可增长字符串。

发现可增长与可变不同,但它们并没有真正解释什么使类型“可增长”。

鉴于这种let mut guess = String::new()

  1. “可生长”是什么意思?
  2. 如何mut改变可增长的字符串?
  3. 是否存在不可增长的字符串类型?

string mutable rust growable

4
推荐指数
1
解决办法
453
查看次数

动态大小类型总是在堆上吗?

我对 Rust 的学习让我了解了动态大小类型 (DST),并且我知道这些类型的大小在编译时无法得知。例如str

我现在的问题是,我说 DST 永远不会存在于堆栈上,它们只存在于堆上,这样说对吗?

另外,另一方面,说大小类型可以存在于堆栈中是否正确:

(eg. let x:u32 = 10)

但也可以存在于堆上,例如通过使用 Box

(eg let x: Box<u32> = Box::new(10))

上述这些说法是否正确?

rust

2
推荐指数
1
解决办法
166
查看次数

标签 统计

rust ×5

string ×2

growable ×1

mutable ×1