Update auto deref description for Option

Update the reason why complier cannot auto deref Option type.
pull/1042/head
GeniusPenguin9 3 years ago committed by GitHub
parent b5fd7d5eea
commit 4bde898b39
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -373,7 +373,7 @@ $ cargo build
大家可能会觉得 `&**` 的形式看上去有些烂没错确实如此。但是就像一瓶好酒一样Rust 也随着时间的推进变得越来越好因此现在我们已经无需再这么做了。事实上Rust 很擅长隐式地做类似的转换,或者可以称之为 [`Deref`](https://course.rs/advance/smart-pointer/deref.html)。
但是 `Deref` 在这里并不能很好的完成自己的任务,原因是在闭包中使用 `Option<&T>` 而不是 `&T` 对于它来说有些过于复杂了,因此我们需要显式地去帮助它完成任务。好在根据我的经验来看,这种情况还是相当少见的
但是自动 `Deref` 在这里并不能很好的完成自己的任务,原因在于 `Deref trait` 是为了智能指针解引用设计的,而 `Option` 不是智能指针,因此其本身并没有实现 `Deref` trait。当编译器遇到一个Option<T>自然就和遇见一个enum一样无能为力了
事实上,还可以使用另一种方式来实现:
```rust

Loading…
Cancel
Save