std::ops::RangeBounds怎么使用
时间: 2024-01-12 15:02:33 浏览: 183
`std::ops::RangeBounds` 是一个 trait,表示一个范围的边界。它有两个实现:`std::ops::Range` 和 `std::ops::RangeFull`。
`std::ops::Range` 表示一个左闭右开的范围,可以使用 `start..end` 或 `start..=end` 的形式来创建。例如:
```rust
use std::ops::RangeBounds;
let range = 1..4; // 表示范围 [1, 4)
let range2 = 1..=4; // 表示范围 [1, 4]
```
`std::ops::RangeFull` 表示一个完整的范围,可以使用 `..` 或 `..=` 的形式来创建。例如:
```rust
use std::ops::RangeBounds;
let full_range = ..; // 表示完整的范围
let full_range2 = ..=4; // 表示范围 [.., 4]
```
一些方法(比如 `std::slice::SliceIndex`)可以接受 `std::ops::RangeBounds` 作为参数,可以使用 `..` 或 `..=` 表示完整的范围,或者使用 `start..end` 或 `start..=end` 表示左闭右开的范围。例如:
```rust
use std::ops::RangeBounds;
let data = &[1, 2, 3, 4, 5];
let range = 1..4; // 表示范围 [1, 4)
let full_range = ..; // 表示完整的范围
assert_eq!(data.get(range), Some(&[2, 3, 4][..]));
assert_eq!(data.get(full_range), Some(&[1, 2, 3, 4, 5][..]));
```
阅读全文