我想写一个小型阶乘库。请查看库主模块内的代码:
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.
] }
Run Code Online (Sandbox Code Playgroud)
对于第一个函数的返回类型,它给了我这个错误:
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.
] }
Run Code Online (Sandbox Code Playgroud)
目标是在编译时获取所有可能的阶乘值的数组。
如果你想返回一个不可变的变量,你必须省略const
. 在 Rust 中,变量默认是不可变的。这类似于声明一切const
在 C++ 中声明所有内容。您可以通过引入可变性来选择退出。
pub fn results() -> [i8; 6] {\n unimplemented!()\n}\n
Run Code Online (Sandbox Code Playgroud)\n\n更多信息请参阅官方书籍:
\n\n\n\n\n默认情况下变量是不可变的。这是 Rust 为您提供的众多推动力之一,让您能够利用 Rust 提供的安全性和简单的并发性来编写代码。但是,您仍然可以选择使变量可变。让\xe2\x80\x99s 探索 Rust 如何以及为何鼓励你支持不变性,以及为什么有时你可能想要选择退出。
\n
如果你想让你的函数在编译时评估,你需要const_fn
功能,该功能仍在开发中。然而,它足够稳定,可以做你想做的事:
pub const fn results() -> [i8; 6] {\n [1, 1, 2, 6, 24, 120] // 720 is too large for i8.\n}\n
Run Code Online (Sandbox Code Playgroud)\n
在编译时获取所有可能阶乘值的数组
只需声明常量值:
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,
];
Run Code Online (Sandbox Code Playgroud)
根本没有理由涉及函数,因为不需要计算!
归档时间: |
|
查看次数: |
2021 次 |
最近记录: |