Log*_*nch 10 variables types constants rust
要在Rust中创建变量,请使用:
let var_name = 10;
Run Code Online (Sandbox Code Playgroud)
这也将是有效的:
let var_name: i32 = 10;
Run Code Online (Sandbox Code Playgroud)
常量变量是这样创建的:
const VAR_NAME: i32 = 10;
Run Code Online (Sandbox Code Playgroud)
但是,如果您尝试创建这样的常量变量:
const VAR_NAME = 10;
Run Code Online (Sandbox Code Playgroud)
您将收到如下所示的错误:
error: expected `:`, found `=`
--> src/main.rs:5:11
|
4 | const VAR_NAME = 10;
| ^ expected `:`
Run Code Online (Sandbox Code Playgroud)
来自JavaScript,Python和PHP等语言,这让我感到困惑。
为什么在使用时必须指定类型定义,而在使用const时却不需要let呢?
Sta*_*eur 14
当前,有一条规则 “必须显式键入常量”。(对于static:“静态项目类似于常量”)。
但是,您是对的:编译器可以推断出来。对此进行了公开讨论:#1349,TL; DR:
const和static变量const FOO = 22可以推断出i32可能不是一个预期的类型。因此,我们最终不得不写作const FOO = 22usize。const-fn,应推断类型值得一提的是,Rust中类型推断的指导原则之一是类型推断应该是局部的。这就是为什么与Haskell不同的是,始终需要完全指定函数签名的原因。造成这种情况的原因多种多样,尤其是对于人类读者而言,这意味着更容易的推理以及更好的错误消息。从
const推理的角度来看,这使模块级别处于困境。马修·M。
到目前为止,仍然没有提议的RFC,因此这个问题仍然存在。
也可以看看:
| 归档时间: |
|
| 查看次数: |
244 次 |
| 最近记录: |