rust - 预期的单元类型 '()',找到 'enum std::option::Option'
问题描述
我的功能如下所示:
pub fn new(s: String) -> Option<i32> {
if s.len() > 10 {
None
}
Some(10)
}
当我尝试编译它时,我收到以下错误消息:
7 | / if s.len() > 10 {
8 | | None
| | ^^^^ expected `()`, found enum `std::option::Option`
9 | | }
| | -- help: consider using a semicolon here
| |_________|
| expected this to be `()`
|
= note: expected unit type `()`
found enum `std::option::Option<_>`
我不确定我做错了什么。任何帮助,将不胜感激
解决方案
No ;
Returns 只能用于块的末尾。
要解决此问题,您可以:
pub fn new(s: String) -> Option<i32> {
if s.len() > 10 {
return None; // Add a early return here
}
Some(10)
}
或者
pub fn new(s: String) -> Option<i32> {
if s.len() > 10 {
None
} else {
Some(10)
} // This is now the end of the function block.
}
推荐阅读
- php - 服务器中的 Laravel cronjob 不会运行
- c++ - 从 fd_set c++ linux 获取 x 处的文件描述符
- python - 如何按一个df的日期时间合并2个数据框只有日期,另一个每小时索引一次
- python - 给定值列表的 Pandas 自定义舍入
- sql - SQL Server:多行到一列并连接
- dictionary - Golang 对相同扩展名的文件进行分组
- python - 获取元素出现在 Python 中每个子列表中的位置
- python - 我的模板中没有看到 Django 个人资料更新表单
- xaml - 带垂直居中子级的 3 行网格
- python - 如何将 2D 边界框像素坐标(x、y、w、h)转换为相对坐标(Yolo 格式)?