pub struct FnStream<'a, T: Clone> { /* private fields */ }
Expand description
Basic stream type. To use it you should provide getter function:
use streams_rs::{*,fn_stream::*};
let get = (|| StreamResult::Ok(1));
let mut stream = FnStream::new(get);
stream.token(0); // 1
stream.token(1); // 1
Implementations§
Source§impl<'a, T: Clone> FnStream<'a, T>
impl<'a, T: Clone> FnStream<'a, T>
Sourcepub fn new(get: impl FnMut() -> StreamResult<T> + 'a) -> Self
pub fn new(get: impl FnMut() -> StreamResult<T> + 'a) -> Self
Examples found in repository?
examples/counter.rs (line 11)
5fn main() {
6 let mut count = 0;
7 let get = || {
8 count += 1;
9 StreamResult::Ok(count - 1)
10 };
11 let mut stream = FnStream::new(get);
12
13 let _ = smatch!(match (stream) {
14 [0=>] => { // if not 0 then we do not match
15 println!("Zero!");
16 }
17 });
18 let _ = smatch!(match (stream) {
19 [1=>] => { // if not 1 then we do not match
20 println!("One!");
21 }
22 });
23 for _ in 0..10 {
24 let _ = smatch!(match (stream) {
25 [a=>b=>] => { // get two values a and b from stream
26 println!("a: {} b: {}",a,b);
27 }
28 });
29 }
30}
Trait Implementations§
Auto Trait Implementations§
impl<'a, T> Freeze for FnStream<'a, T>
impl<'a, T> !RefUnwindSafe for FnStream<'a, T>
impl<'a, T> !Send for FnStream<'a, T>
impl<'a, T> !Sync for FnStream<'a, T>
impl<'a, T> Unpin for FnStream<'a, T>where
T: Unpin,
impl<'a, T> !UnwindSafe for FnStream<'a, T>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more