我想写一个小的阶乘库。请查看库主模块中的代码:
pub fn results() -> const [i8; 6] { [
1,
1,
2,
6,
24,
120,
//720 is too large for i8.
] }
pub fn results() -> const [i32; 13] { [
1,
1,
2,
6,
24,
120,
720,
5_040,
40_320,
362_880,
3_628_800,
39_916_800,
479_001_600,
//6_227_020_800 is too large for i32.
] }
对于第一个函数的返回类型,它给了我这个错误:
error: expected type, found keyword `const`
--> src/main.rs:1:21
|
1 | pub fn results() -> const [i8; 6] { [
| ^^^^^
目标是在编译时获取所有可能阶乘值的数组。
答案 0 :(得分:3)
在编译时获取所有可能阶乘值的数组
只需声明常量值:
pub const RESULTS_I8: [i8; 6] = [1, 1, 2, 6, 24, 120];
pub const RESULTS_I32: [i32; 13] = [
1,
1,
2,
6,
24,
120,
720,
5_040,
40_320,
362_880,
3_628_800,
39_916_800,
479_001_600,
];
完全没有必要包含一个函数,因为不需要计算!
答案 1 :(得分:2)
如果要返回不可变的变量,则必须省略google.com
。在Rust中,默认情况下变量是不可变的。这类似于在C ++中声明所有const
。您可以通过引入可变性来选择退出。
const
有关更多信息,请参见official book:
默认情况下变量是不可变的。这是Rust推动您编写代码的一种方式,它利用了Rust提供的安全性和易并发性。但是,您仍然可以选择使变量可变。让我们探讨一下Rust如何以及为什么鼓励您支持不变性,以及为什么有时您可能想要退出。
如果要在编译时评估函数,则需要(当前)不稳定功能const_fn
。您需要使用每晚编译器来启用功能。
pub fn results() -> [i8; 6] {
unimplemented!()
}