我有一个使用的代码。展开()
:
fn main() {
let paths = std::fs::read_dir("/home/user").unwrap();
for path in paths {
println!("Name: {}", path.unwrap().path().display());
}
}
查看展开的定义后,
pub fn unwrap(self) -> T {
match self {
Ok(t) => t,
Err(e) => unwrap_failed("called `Result::unwrap()` on an `Err` value", e),
}
}
还有
read_dir
的签名
pub fn read_dir<P: AsRef<Path>>(path: P) -> io::Result<ReadDir>
我对
unwrap
返回传入Result
的T
类型的理解是否正确?
在Rust中,当您有一个可能返回T
或失败的操作时,您将有一个Result类型的值
函数<代码>展开(自)-
当你确信自己没有错误时,最好使用它。如果不是这样,通常最好是模式匹配错误或使用
尝试
宏
操作员转发错误。
在您的示例中,调用
read_dir()
将返回一个io::Result
用
试试看
应该是这样的:
fn try_main() -> std::io::Result<()> {
let entries = std::fs::read_dir("/home/user")?;
for entry in entries {
println!("Name: {}", entry?.path().display());
}
Ok(())
}
fn main() {
let res = try_main();
if let Err(e) = res {
println!("Error: {}", e);
}
}
查看如何检查每个错误案例。
(更新为使用
?
而不是尝试!()
.宏仍然可以工作,但是?
是新代码的首选)。
我一直在努力学习什么是EJB bean,这意味着他们的实例在池中被管理,等等。真的不能很好地掌握它们。 你能给我解释一下它们到底是什么吗(实际上对于一个Java程序员来说)?他们是做什么的?他们的目的是什么?为什么要真正使用它们?(为什么不坚持?)也许是一个示例应用程序? 请仅参考更新的信息,即。关于EJB的过时信息可能具有误导性。 对于EJB学习初学者,请注意: EJB基于分布式对象,这是指运行
对数据库进行查询和修改操作的语言叫做 SQL(Structured Query Language,结构化查询语言)。SQL 语言是目前广泛使用的关系数据库标准语言,是各种数据库交互方式的基础。 著名的大型商用数据库 Oracle、DB2、Sybase、SQL Server,开源的数据库 PostgreSQL、MySQL,甚至一些小型的数据库 Access 等都支持 SQL。近些年蓬勃发展的 NoS
问题内容: 我对中的功能有些困惑。例如,为什么下面的试验(一致地)执行它们的工作? 我找不到关于此的好的文档。 问题答案: 伪随机数生成器通过对值执行某些运算来工作。通常,此值是生成器生成的先前编号。但是,第一次使用生成器时,没有先前的值。 播种伪随机数生成器会为其提供第一个“上一个”值。每个种子值将对应于给定随机数生成器的一系列生成值。也就是说,如果两次提供相同的种子,则两次获得相同的数字序列。
我是一个Android开发的新手。什么是android.jar?我指的是https://developer.android.com/guide/platform/?nav=true并试图理解它适合哪个层。我听到了相互矛盾的意见,现在真的很困惑,考虑到我在Android方面的有限知识。谢谢!
本文向大家介绍你有了解Rxjs是什么吗?它是做什么的?相关面试题,主要包含被问及你有了解Rxjs是什么吗?它是做什么的?时的应答技巧和注意事项,需要的朋友参考一下 RxJS 是一个库,它通过使用 observable 序列来编写异步和基于事件的程序。它提供了一个核心类型 Observable,附属类型 (Observer、 Schedulers、 Subjects) 和受 [Array#extra
我可以想到许多地方,C语言中的联合有助于节省内存。因为Rust是一种系统编程语言,为什么它不支持联合呢?