Archives
Trending
Support
Login
clear text
XML
Django
JavaScript
MATLAB
C
C++
C#
Python
SQL
Shell
Bash
Markdown
YAML
JSON
HTML
CSS
PHP
Java
Ruby
Go
Rust
Swift
Kotlin
Arduino
TypeScript
Perl
Autohotkey
Lua
SQF
R
Scala
Haskell
Groovy
Dart
Clojure
VB.NET
Objective-C
PowerShell
Bash
CoffeeScript
Verilog
struct Tee
where T: Iterator, T::Item: Clone, { v: VecDeque
, iter: T, i1: usize, i2: usize, none_encountered: bool, } pub fn tee
(into_iter: T) -> (impl Iterator
, impl Iterator
) where T: IntoIterator, T::Item: Clone, { let t = Rc::new(RefCell::new(Tee { v: VecDeque::new(), iter: into_iter.into_iter(), i1: 0, i2: 0, none_encountered: false, })); let first; let second; { let t1 = Rc::clone(&t); first = from_fn(move || { let mut s = t1.borrow_mut(); if s.i2 != 0 { s.i2 -= 1; return Some(s.v.pop_front().unwrap()); } if s.none_encountered { return None; } match s.iter.next() { None => { s.none_encountered = true; None } Some(a) => { s.v.push_back(a.clone()); s.i1 += 1; Some(a) } } }); } { let t2 = Rc::clone(&t); second = from_fn(move || { let mut s = t2.borrow_mut(); if s.i1 != 0 { s.i1 -= 1; return Some(s.v.pop_front().unwrap()); } if s.none_encountered { return None; } match s.iter.next() { None => { s.none_encountered = true; None } Some(a) => { s.v.push_back(a.clone()); s.i2 += 1; Some(a) } } }); } (first, second) }
Mark as private (unlisted)
for 30 minutes
for 6 hours
for 1 day
for 1 week
for 1 month
for 1 year
everlasting (like CCCP)