# Contains The Contains crate has 2 traits Container and In. ## Container The Container trait can be used to abstract over types that can contain items: `Vec`, `&[T]`, `HashMap`, `Option`, ect. ```rust use contains::Container; let vec = vec![1, 2, 3, 4, 5]; let range = 0..5; let option = Some(3); let containers: &[&dyn Container] = &[&vec, &range, &option]; for container in containers { assert!(container.does_contain(&3)); } ``` ## In The In trait is the Inverse of the Container trait and represents a type that is in a container. Mainly it reverse the call order by providing the `is_in` method. ```rust use contains::{Container, In}; let range = 0..5; assert!(range.does_contain(&3)); // using does_contain assert!(3.is_in(&range)); // using in ```