本文简要介绍rust语言中 Function std::iter::repeat_with
的用法。
用法
pub fn repeat_with<A, F>(repeater: F) -> RepeatWith<F> where F: FnMut() -> A,
创建一个新的迭代器,通过应用提供的闭包,重复器 F: FnMut() -> A
来无限地重复类型为 A
的元素。
repeat_with()
函数一遍又一遍地调用中继器。
像 repeat_with()
这样的无限迭代器经常与像 Iterator::take()
这样的适配器一起使用,以使它们成为有限的。
如果您需要的迭代器的元素类型实现了 Clone
,并且可以将源元素保留在内存中,那么您应该改用 repeat()
函数。
repeat_with()
生成的迭代器不是 DoubleEndedIterator
。如果您需要 repeat_with()
返回 DoubleEndedIterator
,请打开 GitHub 问题来解释您的用例。
例子
基本用法:
use std::iter;
// let's assume we have some value of a type that is not `Clone`
// or which don't want to have in memory just yet because it is expensive:
#[derive(PartialEq, Debug)]
struct Expensive;
// a particular value forever:
let mut things = iter::repeat_with(|| Expensive);
assert_eq!(Some(Expensive), things.next());
assert_eq!(Some(Expensive), things.next());
assert_eq!(Some(Expensive), things.next());
assert_eq!(Some(Expensive), things.next());
assert_eq!(Some(Expensive), things.next());
使用变异和有限:
use std::iter;
// From the zeroth to the third power of two:
let mut curr = 1;
let mut pow2 = iter::repeat_with(|| { let tmp = curr; curr *= 2; tmp })
.take(4);
assert_eq!(Some(1), pow2.next());
assert_eq!(Some(2), pow2.next());
assert_eq!(Some(4), pow2.next());
assert_eq!(Some(8), pow2.next());
// ... and now we're done
assert_eq!(None, pow2.next());
相关用法
- Rust repeat用法及代码示例
- Rust replace用法及代码示例
- Rust rename用法及代码示例
- Rust remove_dir_all用法及代码示例
- Rust read用法及代码示例
- Rust remove_file用法及代码示例
- Rust read_to_string用法及代码示例
- Rust read_link用法及代码示例
- Rust resume_unwind用法及代码示例
- Rust ready用法及代码示例
- Rust read_unaligned用法及代码示例
- Rust remove_dir用法及代码示例
- Rust remove_var用法及代码示例
- Rust read_dir用法及代码示例
- Rust read_volatile用法及代码示例
- Rust range用法及代码示例
- Rust UdpSocket.set_multicast_loop_v6用法及代码示例
- Rust i64.overflowing_add_unsigned用法及代码示例
- Rust Box.downcast用法及代码示例
- Rust BTreeMap.last_key_value用法及代码示例
- Rust str.make_ascii_uppercase用法及代码示例
- Rust u128.checked_pow用法及代码示例
- Rust usize.wrapping_mul用法及代码示例
- Rust AtomicU8.fetch_sub用法及代码示例
- Rust PanicInfo.payload用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Function std::iter::repeat_with。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。