Update trait/generic.md

pull/210/head
Allan Downey 3 years ago
parent f161c021f6
commit 2c574496e5

@ -114,7 +114,7 @@ help: consider restricting type parameter `T`
| +++++++++++++++++++++++++++ | +++++++++++++++++++++++++++
``` ```
同样的,不是所有`T`类型都能进行相加操作,因此我们需要用`std::ops::Add<Output = T>`T进行限制 同样的,不是所有 `T` 类型都能进行相加操作,因此我们需要用 `std::ops::Add<Output = T>``T` 进行限制:
```rust ```rust
fn add<T: std::ops::Add<Output = T>>(a:T, b:T) -> T { fn add<T: std::ops::Add<Output = T>>(a:T, b:T) -> T {
a + b a + b
@ -187,7 +187,7 @@ enum Option<T> {
} }
``` ```
`Option<T>` 是一个拥有泛型 `T`,它第一个成员是 `Some(T)`,存放了一个类型为`T`的值。得益于泛型的引入,我们可以在任何一个需要返回值的函数中,去使用 `Option<T>` 枚举类型来做为返回值,用于返回一个任意类型的值 `Some(T)`,或者没有值 `None` `Option<T>` 是一个拥有泛型 `T` 的枚举类型,它第一个成员是 `Some(T)`,存放了一个类型为 `T` 的值。得益于泛型的引入,我们可以在任何一个需要返回值的函数中,去使用 `Option<T>` 枚举类型来做为返回值,用于返回一个任意类型的值 `Some(T)`,或者没有值 `None`
对于枚举而言,卧龙凤雏永远是绕不过去的存在:如果是 `Option` 是卧龙,那么 `Result` 就一定是凤雏,得两者可得天下: 对于枚举而言,卧龙凤雏永远是绕不过去的存在:如果是 `Option` 是卧龙,那么 `Result` 就一定是凤雏,得两者可得天下:
```rust ```rust
@ -264,7 +264,7 @@ impl Point<f32> {
``` ```
这段代码意味着 `Point<f32>` 类型会有一个方法 `distance_from_origin`,而其他 `T` 不是 `f32` 类型的 `Point<T> `实例则没有定义此方法。这个方法计算点实例与坐标`(0.0, 0.0)` 之间的距离,并使用了只能用于浮点型的数学运算符。 这段代码意味着 `Point<f32>` 类型会有一个方法 `distance_from_origin`,而其他 `T` 不是 `f32` 类型的 `Point<T> `实例则没有定义此方法。这个方法计算点实例与坐标`(0.0, 0.0)` 之间的距离,并使用了只能用于浮点型的数学运算符。
这样我们就能针对特定的泛型类型实现某个特定的方法,对于其它泛型类型,该方法则并无定义 这样我们就能针对特定的泛型类型实现某个特定的方法,对于其它泛型类型则没有定义该方法
@ -369,7 +369,7 @@ where
fn main() { fn main() {
something([0u8; 0]); // ok something([0u8; 0]); // ok
something([0u8; 512]); // ok something([0u8; 512]); // ok
something([0u8; 1024]); // 编译错误数组长度是1024自己超过了768字节的参数长度限制 something([0u8; 1024]); // 编译错误数组长度是1024字节超过了768字节的参数长度限制
} }
// --- // ---

Loading…
Cancel
Save