cam*_*car 2 arrays string rust
此函数适用于 type i32,但适用于 type str:
fn getValues() -> [str; 2] {
[
"37107287533902102798797998220837590246510135740250",
"46376937677490009712648124896970078050417018260538",
]
}
Run Code Online (Sandbox Code Playgroud)
我收到错误:
Run Code Online (Sandbox Code Playgroud)fn getValues() -> [str; 2] { [ "37107287533902102798797998220837590246510135740250", "46376937677490009712648124896970078050417018260538", ] }
这个错误让我觉得我需要添加大小,但我做到了:大小为 2。 Rust 想要什么?
str是str 原始类型,它是一种无大小的类型,有一些限制——您遇到了其中之一。
为了解决您的问题,str您需要返回&str一个借用的字符串切片,而不是返回一个普通的。在这种特定情况下,您甚至可以使用&'static str,因为字符串文字始终具有static生命周期。
此外,由于原始数组也是 DST(动态大小类型,另一种调整大小类型的方法),因此您需要指定元素的数量(您做对了)。
因此,完整的声明将是fn getValues()-> [&'static str; 100].
如果您在编译时不知道数组的大小,您可能想使用 a Vec,如果您有一些非文字字符串,您可能想使用 a String。那看起来像
fn getValues() -> Vec<String> { vec!["shoten".into()] }
Run Code Online (Sandbox Code Playgroud)
PS:不要回避那些堆分配的、拥有的类型——它们确实使编程更容易。与引用和生命周期抗争是一种很好的风格,但您不需要预先完成所有这些工作,而是稍后进行优化和重构。