Rust使用冒号将标识符与类型分开,例如
let x: u8 = 1;
但是,对于函数返回类型 - >用来代替。例如:
fn f() -> u8 { ... }
有人可能会在这里使用冒号:
fn f(): u8 { ... }
虽然使用箭头有一些优先权(例如在Haskell中),但我很好奇这个选择背后的历史原因。另外,我也很好奇这是纯粹的美学原因还是使用箭头有一些技术原因,例如:简化解析。
答案 0 :(得分:6)
嗯,我只是猜测,但我会说原因纯粹是美学。
:
通常发音为“有类型”,而->
则发音为“to”。因此f: fn(i32) -> i32
表示“f 具有从i32
到 i32
”的函数类型。
基本上,有两个上下文可以提到函数的返回值:
功能项目声明:
fn foo(x: i32) -> i32 {
…
}
将函数赋值给具有显式类型的变量:
let f: fn(x: i32) -> i32 = foo;
虽然在第一种情况下使用冒号而不是箭头不会影响可读性,但在第二种情况下肯定会这样做。在两种情况下都有相同的符号是完全合理的。
此箭头的最终原点是Simply Typed Lambda Calculus,此箭头用作函数类型构造函数。从那里它来到Haskell,Scala(好吧,不完全是,他们使用=>
)和其他语言。