Struct std::ops::RangeInclusive 1.26.0[−][src]
pub struct RangeInclusive<Idx> { /* fields omitted */ }
Expand description
范围包括 (start..=end
) 的上下边界。
RangeInclusive
start..=end
包含 x >= start
和 x <= end
的所有值。除非 start <= end
,否则为空。
这个迭代器是 fused,但是迭代完成后 start
和 end
的特定值是未指定的,除了 .is_empty()
之外,一旦不再产生值,就会返回 true
。
Examples
start..=end
语法是 RangeInclusive
:
assert_eq!((3..=5), std::ops::RangeInclusive::new(3, 5)); assert_eq!(3 + 4 + 5, (3..=5).sum());Run
let arr = [0, 1, 2, 3, 4]; assert_eq!(arr[ .. ], [0, 1, 2, 3, 4]); assert_eq!(arr[ .. 3], [0, 1, 2 ]); assert_eq!(arr[ ..=3], [0, 1, 2, 3 ]); assert_eq!(arr[1.. ], [ 1, 2, 3, 4]); assert_eq!(arr[1.. 3], [ 1, 2 ]); assert_eq!(arr[1..=3], [ 1, 2, 3 ]); // 这是 `RangeInclusive`Run
Implementations
pub const fn new(start: Idx, end: Idx) -> RangeInclusive<Idx>ⓘNotable traits for RangeInclusive<A>impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
1.27.0 (const: 1.32.0)[src]
pub const fn new(start: Idx, end: Idx) -> RangeInclusive<Idx>ⓘNotable traits for RangeInclusive<A>impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
1.27.0 (const: 1.32.0)[src]impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
返回范围 (inclusive) 的下限。
当使用包含范围进行迭代时,在迭代结束后未指定 start()
和 end()
的值。
若要确定包含范围是否为空,请使用 is_empty()
方法而不是比较 start() > end()
。
Note: 范围迭代到穷竭之后,此方法返回的值是不确定的。
Examples
assert_eq!((3..=5).start(), &3);Run
返回范围 (inclusive) 的上限。
当使用包含范围进行迭代时,在迭代结束后未指定 start()
和 end()
的值。
若要确定包含范围是否为空,请使用 is_empty()
方法而不是比较 start() > end()
。
Note: 范围迭代到穷竭之后,此方法返回的值是不确定的。
Examples
assert_eq!((3..=5).end(), &5);Run
pub fn contains<U>(&self, item: &U) -> bool where
U: PartialOrd<Idx> + ?Sized,
Idx: PartialOrd<U>,
1.35.0[src]
pub fn contains<U>(&self, item: &U) -> bool where
U: PartialOrd<Idx> + ?Sized,
Idx: PartialOrd<U>,
1.35.0[src]如果范围中包含 item
,则返回 true
。
Examples
assert!(!(3..=5).contains(&2)); assert!( (3..=5).contains(&3)); assert!( (3..=5).contains(&4)); assert!( (3..=5).contains(&5)); assert!(!(3..=5).contains(&6)); assert!( (3..=3).contains(&3)); assert!(!(3..=2).contains(&3)); assert!( (0.0..=1.0).contains(&1.0)); assert!(!(0.0..=1.0).contains(&f32::NAN)); assert!(!(0.0..=f32::NAN).contains(&0.0)); assert!(!(f32::NAN..=1.0).contains(&1.0));Run
迭代完成后,此方法总是返回 false
:
let mut r = 3..=5; assert!(r.contains(&3) && r.contains(&5)); for _ in r.by_ref() {} // 此处未指定精确的字段值 assert!(!r.contains(&3) && !r.contains(&5));Run
如果范围不包含任何项,则返回 true
。
Examples
assert!(!(3..=5).is_empty()); assert!(!(3..=3).is_empty()); assert!( (3..=2).is_empty());Run
如果任何一方都无法比拟,则范围为空:
assert!(!(3.0..=5.0).is_empty()); assert!( (3.0..=f32::NAN).is_empty()); assert!( (f32::NAN..=5.0).is_empty());Run
迭代完成后,此方法返回 true
:
let mut r = 3..=5; for _ in r.by_ref() {} // 此处未指定精确的字段值 assert!(r.is_empty());Run
Trait Implementations
pub fn clone(&self) -> RangeInclusive<Idx>ⓘNotable traits for RangeInclusive<A>impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
[src]
pub fn clone(&self) -> RangeInclusive<Idx>ⓘNotable traits for RangeInclusive<A>impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
[src]impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
返回值的副本。 Read more
从 source
执行复制分配。 Read more
pub fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R where
F: FnMut(B, <RangeInclusive<A> as Iterator>::Item) -> R,
R: Try<Output = B>,
RangeInclusive<A>: Sized,
[src]
pub fn try_rfold<B, F, R>(&mut self, init: B, f: F) -> R where
F: FnMut(B, <RangeInclusive<A> as Iterator>::Item) -> R,
R: Try<Output = B>,
RangeInclusive<A>: Sized,
[src]这是 Iterator::try_fold()
的反向版本: 它从迭代器的后面开始接收元素。 Read more
pub fn rfold<B, F>(self, init: B, f: F) -> B where
F: FnMut(B, <RangeInclusive<A> as Iterator>::Item) -> B,
RangeInclusive<A>: Sized,
[src]
pub fn rfold<B, F>(self, init: B, f: F) -> B where
F: FnMut(B, <RangeInclusive<A> as Iterator>::Item) -> B,
RangeInclusive<A>: Sized,
[src]一种迭代器方法,从后面开始,将迭代器的元素减少为单个最终值。 Read more
type Item = A
type Item = A
被迭代的元素的类型。
pub fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R where
F: FnMut(B, <RangeInclusive<A> as Iterator>::Item) -> R,
R: Try<Output = B>,
RangeInclusive<A>: Sized,
[src]
pub fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R where
F: FnMut(B, <RangeInclusive<A> as Iterator>::Item) -> R,
R: Try<Output = B>,
RangeInclusive<A>: Sized,
[src]一个迭代器方法,它只要成功返回就应用函数,并产生单个最终值。 Read more
pub fn fold<B, F>(self, init: B, f: F) -> B where
F: FnMut(B, <RangeInclusive<A> as Iterator>::Item) -> B,
RangeInclusive<A>: Sized,
[src]
pub fn fold<B, F>(self, init: B, f: F) -> B where
F: FnMut(B, <RangeInclusive<A> as Iterator>::Item) -> B,
RangeInclusive<A>: Sized,
[src]通过应用操作将每个元素 fold
到一个累加器中,返回最终结果。 Read more
🔬 This is a nightly-only experimental API. (iter_advance_by
#77404)
recently added
通过 n
元素使迭代器前进。 Read more
创建一个从同一点开始的迭代器,但在每次迭代时以给定的数量逐步执行。 Read more
接受两个迭代器,并依次在两个迭代器上创建一个新的迭代器。 Read more
将两个迭代器压缩为成对的单个迭代器。 Read more
fn intersperse(self, separator: Self::Item) -> Intersperse<Self>ⓘNotable traits for Intersperse<I>impl<I> Iterator for Intersperse<I> where
I: Iterator,
<I as Iterator>::Item: Clone, type Item = <I as Iterator>::Item;
where
Self::Item: Clone,
[src]
fn intersperse(self, separator: Self::Item) -> Intersperse<Self>ⓘNotable traits for Intersperse<I>impl<I> Iterator for Intersperse<I> where
I: Iterator,
<I as Iterator>::Item: Clone, type Item = <I as Iterator>::Item;
where
Self::Item: Clone,
[src]impl<I> Iterator for Intersperse<I> where
I: Iterator,
<I as Iterator>::Item: Clone, type Item = <I as Iterator>::Item;
🔬 This is a nightly-only experimental API. (iter_intersperse
#79524)
recently added
创建一个新的迭代器,该迭代器将 separator
的副本放置在原始迭代器的相邻项之间。 Read more
fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>ⓘNotable traits for IntersperseWith<I, G>impl<I, G> Iterator for IntersperseWith<I, G> where
I: Iterator,
G: FnMut() -> <I as Iterator>::Item, type Item = <I as Iterator>::Item;
where
G: FnMut() -> Self::Item,
[src]
fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>ⓘNotable traits for IntersperseWith<I, G>impl<I, G> Iterator for IntersperseWith<I, G> where
I: Iterator,
G: FnMut() -> <I as Iterator>::Item, type Item = <I as Iterator>::Item;
where
G: FnMut() -> Self::Item,
[src]impl<I, G> Iterator for IntersperseWith<I, G> where
I: Iterator,
G: FnMut() -> <I as Iterator>::Item, type Item = <I as Iterator>::Item;
🔬 This is a nightly-only experimental API. (iter_intersperse
#79524)
recently added
创建一个新的迭代器,该迭代器将 separator
生成的项放在原始迭代器的相邻项之间。 Read more
获取一个闭包并创建一个迭代器,该迭代器在每个元素上调用该闭包。 Read more
创建一个迭代器,该迭代器使用闭包确定是否应产生元素。 Read more
创建一个同时过滤和 maps 的迭代器。 Read more
创建一个迭代器,该迭代器给出当前迭代次数以及下一个值。 Read more
创建一个迭代器,该迭代器根据谓词产生元素。 Read more
🔬 This is a nightly-only experimental API. (iter_map_while
#68537)
recently added
创建一个迭代器,该迭代器均基于谓词和 maps 产生元素。 Read more
创建一个跳过前 n
个元素的迭代器。 Read more
创建一个迭代器,它产生第一个 n
元素,如果底层迭代器提前结束,则产生更少的元素。 Read more
创建一个迭代器,其工作方式类似于 map,但是将嵌套的结构展平。 Read more
创建一个可简化嵌套结构体的迭代器。 Read more
对迭代器的每个元素执行某些操作,将值传递给它。 Read more
#[must_use = "if you really need to exhaust the iterator, consider `.for_each(drop)` instead"]fn collect<B>(self) -> B where
B: FromIterator<Self::Item>,
1.0.0[src]
#[must_use = "if you really need to exhaust the iterator, consider `.for_each(drop)` instead"]fn collect<B>(self) -> B where
B: FromIterator<Self::Item>,
1.0.0[src]将迭代器转换为集合。 Read more
使用一个迭代器,从中创建两个集合。 Read more
fn partition_in_place<'a, T, P>(self, predicate: P) -> usize where
Self: DoubleEndedIterator<Item = &'a mut T>,
T: 'a,
P: FnMut(&T) -> bool,
[src]
fn partition_in_place<'a, T, P>(self, predicate: P) -> usize where
Self: DoubleEndedIterator<Item = &'a mut T>,
T: 'a,
P: FnMut(&T) -> bool,
[src]🔬 This is a nightly-only experimental API. (iter_partition_in_place
#62543)
new API
根据给定的谓词,对迭代器的元素进行就地重新排序,以使所有返回 true
的元素都在所有返回 false
的元素之前。
返回找到的 true
元素的数量。 Read more
🔬 This is a nightly-only experimental API. (iter_is_partitioned
#62544)
new API
检查此迭代器的元素是否根据给定的谓词进行了分区,以便所有返回 true
的元素都在所有返回 false
的元素之前。 Read more
一个迭代器方法,该方法将一个容易犯错的函数应用于迭代器中的每个项,在第一个错误处停止并返回该错误。 Read more
通过重复应用归约运算,将元素缩减为一个。 Read more
测试迭代器的每个元素是否与谓词匹配。 Read more
测试迭代器的任何元素是否与谓词匹配。 Read more
搜索满足谓词的迭代器的元素。 Read more
将函数应用于迭代器的元素,并返回第一个非无结果。 Read more
🔬 This is a nightly-only experimental API. (try_find
#63178)
new API
将函数应用于迭代器的元素,并返回第一个真结果或第一个错误。 Read more
在迭代器中搜索元素,并返回其索引。 Read more
fn rposition<P>(&mut self, predicate: P) -> Option<usize> where
Self: ExactSizeIterator + DoubleEndedIterator,
P: FnMut(Self::Item) -> bool,
1.0.0[src]
fn rposition<P>(&mut self, predicate: P) -> Option<usize> where
Self: ExactSizeIterator + DoubleEndedIterator,
P: FnMut(Self::Item) -> bool,
1.0.0[src]从右侧搜索迭代器中的元素,并返回其索引。 Read more
返回给出指定函数最大值的元素。 Read more
返回给出相对于指定比较函数的最大值的元素。 Read more
返回给出指定函数中最小值的元素。 Read more
返回给出相对于指定比较函数的最小值的元素。 Read more
反转迭代器的方向。 Read more
将成对的迭代器转换为一对容器。 Read more
创建一个迭代器,该迭代器将复制其所有元素。 Read more
创建一个迭代器,该迭代器将克隆所有元素。 Read more
不断重复的迭代器。 Read more
Lexicographically 将此 Iterator
的元素与另一个元素进行比较。 Read more
fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering where
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,
I: IntoIterator,
[src]
fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering where
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,
I: IntoIterator,
[src]Lexicographically 就指定的比较函数而言,将此 Iterator
的元素与另一个元素进行比较。 Read more
fn partial_cmp<I>(self, other: I) -> Option<Ordering> where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
fn partial_cmp<I>(self, other: I) -> Option<Ordering> where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]Lexicographically 将此 Iterator
的元素与另一个元素进行比较。 Read more
fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering> where
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
I: IntoIterator,
[src]
fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering> where
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,
I: IntoIterator,
[src]Lexicographically 就指定的比较函数而言,将此 Iterator
的元素与另一个元素进行比较。 Read more
fn eq<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
1.5.0[src]
fn eq<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
1.5.0[src]fn eq_by<I, F>(self, other: I, eq: F) -> bool where
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,
I: IntoIterator,
[src]
fn eq_by<I, F>(self, other: I, eq: F) -> bool where
F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,
I: IntoIterator,
[src]fn ne<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
1.5.0[src]
fn ne<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialEq<<I as IntoIterator>::Item>,
1.5.0[src]fn lt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
fn lt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]fn le<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
fn le<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]fn gt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
fn gt<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]fn ge<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]
fn ge<I>(self, other: I) -> bool where
I: IntoIterator,
Self::Item: PartialOrd<<I as IntoIterator>::Item>,
1.5.0[src]🔬 This is a nightly-only experimental API. (is_sorted
#53485)
new API
检查此迭代器的元素是否使用给定的比较器函数进行排序。 Read more
fn is_sorted_by_key<F, K>(self, f: F) -> bool where
F: FnMut(Self::Item) -> K,
K: PartialOrd<K>,
[src]
fn is_sorted_by_key<F, K>(self, f: F) -> bool where
F: FnMut(Self::Item) -> K,
K: PartialOrd<K>,
[src]🔬 This is a nightly-only experimental API. (is_sorted
#53485)
new API
检查此迭代器的元素是否使用给定的键提取函数进行排序。 Read more
此方法测试 self
和 other
值是否相等,并由 ==
使用。 Read more
此方法测试 !=
。
slice_index_methods
)返回此位置输出的共享引用,而不执行任何边界检查。
即使未使用所得的引用,使用越界索引或悬空的 slice
指针调用此方法也是 [undefined 行为]。 Read more
slice_index_methods
)返回此位置输出的变量引用,而不执行任何边界检查。
即使未使用所得的引用,使用越界索引或悬空的 slice
指针调用此方法也是 [undefined 行为]。 Read more
slice_index_methods
)返回此位置输出的共享引用,如果越界则会触发 panic。 Read more
使用语法 &self[begin ..= end]
或 &mut self[begin ..= end]
实现子字符串切片。
从字节范围 [begin
, end
] 返回给定字符串的片段。等效于 &self [begin .. end + 1]
或 &mut self[begin .. end + 1]
,除非 end
具有 usize
的最大值。
此运算为 O(1)。
Panics
Panics,如果 begin
不指向字符的起始字节偏移 (由 is_char_boundary
定义),如果 end
不指向字符的终止字节偏移 (end + 1
是起始字节偏移或等于 len
),如果 begin > end
,如果是 end >= len
。
pub fn get_mut(
self,
slice: &mut str
) -> Option<&mut <RangeInclusive<usize> as SliceIndex<str>>::Output>
[src]
pub fn get_mut(
self,
slice: &mut str
) -> Option<&mut <RangeInclusive<usize> as SliceIndex<str>>::Output>
[src]slice_index_methods
)如果在边界内,则对此位置的输出返回一个可变引用。 Read more
pub unsafe fn get_unchecked(
self,
slice: *const str
) -> *const <RangeInclusive<usize> as SliceIndex<str>>::Output
[src]
pub unsafe fn get_unchecked(
self,
slice: *const str
) -> *const <RangeInclusive<usize> as SliceIndex<str>>::Output
[src]slice_index_methods
)返回此位置输出的共享引用,而不执行任何边界检查。
即使未使用所得的引用,使用越界索引或悬空的 slice
指针调用此方法也是 [undefined 行为]。 Read more
pub unsafe fn get_unchecked_mut(
self,
slice: *mut str
) -> *mut <RangeInclusive<usize> as SliceIndex<str>>::Output
[src]
pub unsafe fn get_unchecked_mut(
self,
slice: *mut str
) -> *mut <RangeInclusive<usize> as SliceIndex<str>>::Output
[src]slice_index_methods
)返回此位置输出的变量引用,而不执行任何边界检查。
即使未使用所得的引用,使用越界索引或悬空的 slice
指针调用此方法也是 [undefined 行为]。 Read more
pub fn index(
self,
slice: &str
) -> &<RangeInclusive<usize> as SliceIndex<str>>::OutputⓘNotable traits for RangeInclusive<A>impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
[src]
pub fn index(
self,
slice: &str
) -> &<RangeInclusive<usize> as SliceIndex<str>>::OutputⓘNotable traits for RangeInclusive<A>impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
[src]impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
slice_index_methods
)返回此位置输出的共享引用,如果越界则会触发 panic。 Read more
pub fn index_mut(
self,
slice: &mut str
) -> &mut <RangeInclusive<usize> as SliceIndex<str>>::OutputⓘNotable traits for RangeInclusive<A>impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
[src]
pub fn index_mut(
self,
slice: &mut str
) -> &mut <RangeInclusive<usize> as SliceIndex<str>>::OutputⓘNotable traits for RangeInclusive<A>impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
[src]impl<A> Iterator for RangeInclusive<A> where
A: Step, type Item = A;
slice_index_methods
)返回此位置输出的变量引用,如果越界则会触发 panic。 Read more