//! This is a module to test doc injection.
//! ```
//! fn test() {}
//! ```
/// ```
/// let _ = "early doctests should not go boom";
/// ```
struct Foo {
bar: bool,
}
/// This is an impl with a code block.
///
/// ```
/// fn foo() {
///
/// }
/// ```
impl Foo {
/// ```
/// let _ = "Call me
// KILLER WHALE
/// Ishmael.";
/// ```
pub const bar: bool = true;
/// Constructs a new `Foo`.
///
/// # Examples
///
/// ```
/// # #![allow(unused_mut)]
/// let mut foo: Foo = Foo::new();
/// ```
pub const fn new() -> Foo {
Foo { bar: true }
}
/// `bar` method on `Foo`.
///
/// # Examples
///
/// ```
/// use x::y;
///
/// let foo = Foo::new();
///
/// // calls bar on foo
/// assert!(foo.bar());
///
/// let bar = foo.bar || Foo::bar;
///
/// /* multi-line
/// comment */
///
/// let multi_line_string = "Foo
/// bar\n
/// ";
///
/// ```
///
/// ```rust,no_run
/// let foobar = Foo::new().bar();
/// ```
///
/// ```sh
/// echo 1
/// ```
pub fn foo(&self) -> bool {
true
}
}
/// [`Foo`](Foo) is a struct
/// This function is > [`all_the_links`](all_the_links) <
/// [`noop`](noop) is a macro below
/// [`Item`] is a struct in the module [`module`]
///
/// [`Item`]: module::Item
/// [mix_and_match]: ThisShouldntResolve
pub fn all_the_links() {}
pub mod module {
pub struct Item;
}
/// ```
/// noop!(1);
/// ```
macro_rules! noop {
($expr:expr) => {
$expr
}
}
/// ```rust
/// let _ = example(&[1, 2, 3]);
/// ```
///
/// ```
/// loop {}
#[cfg_attr(not(feature = "false"), doc = "loop {}")]
#[doc = "loop {}"]
/// ```
///
#[cfg_attr(feature = "alloc", doc = "```rust")]
#[cfg_attr(not(feature = "alloc"), doc = "```ignore")]
/// let _ = example(&alloc::vec![1, 2, 3]);
/// ```
pub fn mix_and_match() {}
/**
It is beyond me why you'd use these when you got ///
```rust
let _ = example(&[1, 2, 3]);
```
[`block_comments2`] tests these with indentation
*/
pub fn block_comments() {}
/**
Really, I don't get it
```rust
let _ = example(&[1, 2, 3]);
```
[`block_comments`] tests these without indentation
*/
pub fn block_comments2() {}