#[cfg(feature = "hyphenation")] extern crate hyphenation; extern crate textwrap; #[cfg(feature = "hyphenation")] use hyphenation::{Language, Load, Standard}; #[cfg(feature = "term_size")] use textwrap::Wrapper; #[cfg(not(feature = "term_size"))] fn main() { println!("Please enable the term_size feature to run this example."); } #[cfg(feature = "term_size")] fn main() { #[cfg(not(feature = "hyphenation"))] fn new_wrapper<'a>() -> (&'static str, Wrapper<'a, textwrap::HyphenSplitter>) { ("without hyphenation", Wrapper::with_termwidth()) } #[cfg(feature = "hyphenation")] fn new_wrapper<'a>() -> (&'static str, Wrapper<'a, Standard>) { let dictionary = Standard::from_embedded(Language::EnglishUS).unwrap(); ( "with hyphenation", Wrapper::with_splitter(textwrap::termwidth(), dictionary), ) } let example = "Memory safety without garbage collection. \ Concurrency without data races. \ Zero-cost abstractions."; // Create a new Wrapper -- automatically set the width to the // current terminal width. let (msg, wrapper) = new_wrapper(); println!("Formatted {} in {} columns:", msg, wrapper.width); println!("----"); println!("{}", wrapper.fill(example)); println!("----"); }