< 返回版块

leolee0101 发表于 2022-05-03 07:41

刚开始学习,有一个简单的问题想请教:

函数名可以直接绑定给一个变量,好像是经过类型转换,绑定给一个函数指针。

   let funp:fn() = main;
   let funp:fn(String) -> _ = String::from;

而运算符好像不行,报错:

let funp:fn(i32) -> _ = (+);
error: expected expression, found `+`
  --> src/main.rs:56:30
   |
56 |     let funp:fn(i32) -> _ = (+);
   |                              ^ expected expression

另外,运算符应该有类型吧,如果想打印一个运算符的类型,有什么方法吗。除了println!("{}", std::any::type_name::()) 。 repl 中有相关命令吗?

评论区

写评论
作者 leolee0101 2022-05-04 12:11

嗯,之前确实学过一段时间。

--
👇
Bai-Jinlin: 一看就是学过Haskell

作者 leolee0101 2022-05-04 12:06

嗯,感谢热心解答。原意是想知道运算符,有没有类似haskell那样,查看运算符的类型,比如:

(+) :: Num a => a -> a -> a。

不过,根据答案里的链接,可以从运算符重载的文档中找到重载后函数的类型。 感谢热心且有理有据的回答。

--
👇
苦瓜小仔: 运算符属于 rustc 的内置类型

Rust 没有 repl。

Rust 靠 trait 重载运算符

苦瓜小仔 2022-05-03 09:45

运算符属于 rustc 的内置类型

Rust 没有 repl。

Rust 靠 trait 重载运算符

Bai-Jinlin 2022-05-03 09:21

一看就是学过Haskell

1 共 4 条评论, 1 页