Source code
Revision control
Copy as Markdown
Other Tools
use displaydoc::Display;↩
↩
#[cfg(feature = "std")]↩
use std::path::PathBuf;↩
↩
#[derive(Display)]↩
/// Just a basic struct {thing}↩
struct HappyStruct {↩
thing: &'static str,↩
}↩
↩
#[derive(Display)]↩
#[ignore_extra_doc_attributes]↩
/// Just a basic struct {thing}↩
/// and this line should get ignored↩
struct HappyStruct2 {↩
thing: &'static str,↩
}↩
↩
#[derive(Display)]↩
enum Happy {↩
/// I really like Variant1↩
Variant1,↩
/// Variant2 is pretty swell 2↩
Variant2,↩
/// Variant3 is okay {sometimes}↩
Variant3 { sometimes: &'static str },↩
/**↩
* Variant4 wants to have a lot of lines↩
*↩
* Lets see how this works out for it↩
*/↩
Variant4,↩
/// Variant5 has a parameter {0} and some regular comments↩
// A regular comment that won't get picked↩
Variant5(u32),↩
↩
/// The path {0}↩
#[cfg(feature = "std")]↩
Variant6(PathBuf),↩
↩
/// These docs are ignored↩
#[displaydoc("Variant7 has a parameter {0} and uses #[displaydoc]")]↩
/// These docs are also ignored↩
Variant7(u32),↩
}↩
↩
// Used for testing indented doc comments↩
mod inner_mod {↩
use super::Display;↩
↩
#[derive(Display)]↩
pub enum InnerHappy {↩
/// I really like Variant1↩
Variant1,↩
/// Variant2 is pretty swell 2↩
Variant2,↩
/// Variant3 is okay {sometimes}↩
Variant3 { sometimes: &'static str },↩
/**↩
* Variant4 wants to have a lot of lines↩
*↩
* Lets see how this works out for it↩
*/↩
Variant4,↩
/// Variant5 has a parameter {0} and some regular comments↩
// A regular comment that won't get picked↩
Variant5(u32),↩
↩
/** what happens if we↩
* put text on the first line?↩
*/↩
Variant6,↩
↩
/**↩
what happens if we don't use *?↩
*/↩
Variant7,↩
↩
/**↩
*↩
* what about extra new lines?↩
*/↩
Variant8,↩
}↩
}↩
↩
fn assert_display<T: std::fmt::Display>(input: T, expected: &'static str) {↩
let out = format!("{}", input);↩
assert_eq!(expected, out);↩
}↩
↩
#[test]↩
fn does_it_print() {↩
assert_display(Happy::Variant1, "I really like Variant1");↩
assert_display(Happy::Variant2, "Variant2 is pretty swell 2");↩
assert_display(Happy::Variant3 { sometimes: "hi" }, "Variant3 is okay hi");↩
assert_display(↩
Happy::Variant4,↩
"Variant4 wants to have a lot of lines\n\nLets see how this works out for it",↩
);↩
assert_display(↩
Happy::Variant5(2),↩
"Variant5 has a parameter 2 and some regular comments",↩
);↩
assert_display(↩
Happy::Variant7(2),↩
"Variant7 has a parameter 2 and uses #[displaydoc]",↩
);↩
assert_display(HappyStruct { thing: "hi" }, "Just a basic struct hi");↩
↩
assert_display(HappyStruct2 { thing: "hi2" }, "Just a basic struct hi2");↩
↩
assert_display(inner_mod::InnerHappy::Variant1, "I really like Variant1");↩
assert_display(↩
inner_mod::InnerHappy::Variant2,↩
"Variant2 is pretty swell 2",↩
);↩
assert_display(↩
inner_mod::InnerHappy::Variant3 { sometimes: "hi" },↩
"Variant3 is okay hi",↩
);↩
assert_display(↩
inner_mod::InnerHappy::Variant4,↩
"Variant4 wants to have a lot of lines\n\nLets see how this works out for it",↩
);↩
assert_display(↩
inner_mod::InnerHappy::Variant5(2),↩
"Variant5 has a parameter 2 and some regular comments",↩
);↩
assert_display(↩
inner_mod::InnerHappy::Variant6,↩
"what happens if we\nput text on the first line?",↩
);↩
assert_display(↩
inner_mod::InnerHappy::Variant7,↩
"what happens if we don\'t use *?",↩
);↩
assert_display(↩
inner_mod::InnerHappy::Variant8,↩
"what about extra new lines?",↩
);↩
}↩
↩
#[test]↩
#[cfg(feature = "std")]↩
fn does_it_print_path() {↩
assert_display(↩
Happy::Variant6(PathBuf::from("/var/log/happy")),↩
"The path /var/log/happy",↩
);↩
}↩