pull/325/head
glud123 3 years ago
parent ee213aecb5
commit 98af41e59e

@ -189,7 +189,7 @@ fn do_stuff<T: Clone>(value: &T) {
let cloned = value.clone(); let cloned = value.clone();
} }
``` ```
上面例子中 `cloned` 的类型什么?首先编译器检查能不能进行**值方法调用** `value` 的类型是 `&T`,同时 `clone` 方法的签名也是 `&T` `fn clone(&T) -> T`,因此可以进行值方法调用,再加上编译器知道了 `T` 实现了 `Clone`,因此 `cloned` 的类型是 `T` 上面例子中 `cloned` 的类型什么?首先编译器检查能不能进行**值方法调用** `value` 的类型是 `&T`,同时 `clone` 方法的签名也是 `&T` `fn clone(&T) -> T`,因此可以进行值方法调用,再加上编译器知道了 `T` 实现了 `Clone`,因此 `cloned` 的类型是 `T`
如果 `T: Clone` 的特征约束被移除呢? 如果 `T: Clone` 的特征约束被移除呢?
```rust ```rust

Loading…
Cancel
Save