another_rxrust/
material.rs1use crate::prelude::RxError;
2use std::fmt::Debug;
3
4#[derive(Clone, Debug)]
5pub enum Material<T>
6where
7 T: Clone + Send + Sync,
8{
9 Next(T),
10 Error(RxError),
11 Complete,
12}
13
14#[cfg(test)]
15mod test {
16 use crate::prelude::*;
17
18 #[test]
19 fn basic() {
20 println!("{:?}", Material::Next(0));
21 println!(
22 "{:?}",
23 Material::Error::<i32>(RxError::from_error("ERR!"))
24 );
25 println!("{:?}", Material::Complete::<i32>);
26 }
27
28 #[test]
29 fn omit_scope() {
30 use Material::*;
31 println!("{:?}", Next(0));
32 println!(
33 "{:?}",
34 Error::<i32>(RxError::from_error("ERR!"))
35 );
36 println!("{:?}", Complete::<i32>);
37 }
38
39 #[test]
40 fn custom_type() {
41 use Material::*;
42 #[derive(Clone)]
43 struct X {}
44 let x = Next(X {});
45 match x {
47 Next(_) => println!("Next"),
48 Error(_) => println!("Error"),
49 Complete => println!("Complete"),
50 }
51 }
52}