本文簡要介紹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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。