#![warn( clippy::default_trait_access, clippy::dbg_macro, clippy::print_stdout, clippy::unimplemented, clippy::use_self, missing_copy_implementations, missing_docs, non_snake_case, non_upper_case_globals, rust_2018_idioms, unreachable_pub )] use enum_as_inner::EnumAsInner; pub mod name_collisions { #![allow(dead_code, missing_copy_implementations, missing_docs)] pub struct Option; pub struct Some; pub struct None; pub struct Result; pub struct Ok; pub struct Err; } #[allow(unused_imports)] use name_collisions::*; #[allow(dead_code)] #[derive(Debug, Clone, Copy, EnumAsInner)] enum WithGenerics { A(T), B(T), } #[test] fn with_generics() { let mut with_generics = WithGenerics::A(100); assert!(with_generics.is_a()); assert!(!with_generics.is_b()); assert!(with_generics.as_a().is_some()); assert!(with_generics.as_b().is_none()); assert_eq!(with_generics.into_a().unwrap(), 100); assert_eq!(*with_generics.as_a().unwrap(), 100); assert_eq!(*with_generics.as_a_mut().unwrap(), 100); assert!(with_generics.into_b().is_err()); assert!(with_generics.as_b().is_none()); assert!(with_generics.as_b_mut().is_none()); }