2021-02-21 14:25:12 +01:00
|
|
|
//! The point of this crate is to be able to have enough different "kinds" of
|
|
|
|
|
//! documentation generated so we can test each different features.
|
2021-12-17 22:38:18 -08:00
|
|
|
#![doc(html_playground_url="https://play.rust-lang.org/")]
|
2021-02-21 14:25:12 +01:00
|
|
|
|
|
|
|
|
#![crate_name = "test_docs"]
|
2021-10-30 17:44:50 +02:00
|
|
|
#![feature(rustdoc_internals)]
|
2021-06-24 14:30:01 +02:00
|
|
|
#![feature(doc_cfg)]
|
2021-02-21 14:25:12 +01:00
|
|
|
|
2021-07-16 15:15:23 +02:00
|
|
|
use std::convert::AsRef;
|
2021-02-21 14:25:12 +01:00
|
|
|
use std::fmt;
|
|
|
|
|
|
|
|
|
|
/// Basic function with some code examples:
|
|
|
|
|
///
|
|
|
|
|
/// ```
|
|
|
|
|
/// println!("nothing fancy");
|
2021-10-19 11:42:59 +02:00
|
|
|
/// println!("but with two lines!");
|
2021-02-21 14:25:12 +01:00
|
|
|
/// ```
|
|
|
|
|
///
|
|
|
|
|
/// A failing to compile one:
|
|
|
|
|
///
|
|
|
|
|
/// ```compile_fail
|
|
|
|
|
/// println!("where did my argument {} go? :'(");
|
|
|
|
|
/// ```
|
|
|
|
|
///
|
|
|
|
|
/// An ignored one:
|
|
|
|
|
///
|
|
|
|
|
/// ```ignore (it's a test)
|
|
|
|
|
/// Let's say I'm just some text will ya?
|
|
|
|
|
/// ```
|
2021-08-28 11:43:21 +02:00
|
|
|
///
|
|
|
|
|
/// An inlined `code`!
|
2021-02-21 14:25:12 +01:00
|
|
|
pub fn foo() {}
|
|
|
|
|
|
|
|
|
|
/// Just a normal struct.
|
|
|
|
|
pub struct Foo;
|
|
|
|
|
|
2021-03-09 21:33:39 +01:00
|
|
|
impl Foo {
|
|
|
|
|
#[must_use]
|
2021-04-19 22:59:23 +02:00
|
|
|
pub fn must_use(&self) -> bool {
|
|
|
|
|
true
|
|
|
|
|
}
|
2021-03-09 21:33:39 +01:00
|
|
|
}
|
|
|
|
|
|
2021-07-16 15:15:23 +02:00
|
|
|
impl AsRef<str> for Foo {
|
|
|
|
|
fn as_ref(&self) -> &str {
|
|
|
|
|
"hello"
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2021-02-21 14:25:12 +01:00
|
|
|
/// Just a normal enum.
|
2021-11-25 15:39:04 +01:00
|
|
|
///
|
|
|
|
|
/// # title!
|
2021-05-25 17:48:57 +02:00
|
|
|
#[doc(alias = "ThisIsAnAlias")]
|
2021-02-21 14:25:12 +01:00
|
|
|
pub enum WhoLetTheDogOut {
|
|
|
|
|
/// Woof!
|
|
|
|
|
Woof,
|
|
|
|
|
/// Meoooooooow...
|
|
|
|
|
Meow,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Who doesn't love to wrap a `format!` call?
|
|
|
|
|
pub fn some_more_function<T: fmt::Debug>(t: &T) -> String {
|
|
|
|
|
format!("{:?}", t)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Woohoo! A trait!
|
|
|
|
|
pub trait AnotherOne {
|
2021-03-12 14:25:01 +01:00
|
|
|
/// Some func 3.
|
|
|
|
|
fn func3();
|
|
|
|
|
|
2021-02-21 14:25:12 +01:00
|
|
|
/// Some func 1.
|
|
|
|
|
fn func1();
|
|
|
|
|
|
2021-03-12 14:25:01 +01:00
|
|
|
fn another();
|
|
|
|
|
fn why_not();
|
|
|
|
|
|
2021-02-21 14:25:12 +01:00
|
|
|
/// Some func 2.
|
|
|
|
|
fn func2();
|
|
|
|
|
|
2021-03-12 14:25:01 +01:00
|
|
|
fn hello();
|
2021-02-21 14:25:12 +01:00
|
|
|
}
|
|
|
|
|
|
2021-03-22 22:17:43 +01:00
|
|
|
/// ```compile_fail
|
|
|
|
|
/// whatever
|
|
|
|
|
/// ```
|
|
|
|
|
///
|
2021-02-21 14:25:12 +01:00
|
|
|
/// Check for "i" signs in lists!
|
|
|
|
|
///
|
|
|
|
|
/// 1. elem 1
|
2021-03-22 22:17:43 +01:00
|
|
|
/// 2. test 1
|
|
|
|
|
/// ```compile_fail
|
|
|
|
|
/// fn foo() {}
|
|
|
|
|
/// ```
|
2021-02-21 14:25:12 +01:00
|
|
|
/// 3. elem 3
|
|
|
|
|
/// 4. ```ignore (it's a test)
|
|
|
|
|
/// fn foo() {}
|
|
|
|
|
/// ```
|
|
|
|
|
/// 5. elem 5
|
2021-03-22 22:17:43 +01:00
|
|
|
///
|
|
|
|
|
/// Final one:
|
|
|
|
|
///
|
|
|
|
|
/// ```ignore (still a test)
|
|
|
|
|
/// let x = 12;
|
|
|
|
|
/// ```
|
2021-02-21 14:25:12 +01:00
|
|
|
pub fn check_list_code_block() {}
|
2021-04-19 22:59:23 +02:00
|
|
|
|
2021-06-24 14:30:01 +02:00
|
|
|
/// a thing with a label
|
|
|
|
|
#[deprecated(since = "1.0.0", note = "text why this deprecated")]
|
|
|
|
|
#[doc(cfg(unix))]
|
|
|
|
|
pub fn replaced_function() {}
|
|
|
|
|
|
2021-07-14 15:00:12 +02:00
|
|
|
/// Some doc with `code`!
|
2021-04-19 22:59:23 +02:00
|
|
|
pub enum AnEnum {
|
|
|
|
|
WithVariants { and: usize, sub: usize, variants: usize },
|
|
|
|
|
}
|
2021-05-21 22:53:50 +02:00
|
|
|
|
|
|
|
|
#[doc(keyword = "CookieMonster")]
|
2021-07-12 17:42:59 +02:00
|
|
|
/// Some keyword.
|
2021-05-21 22:53:50 +02:00
|
|
|
pub mod keyword {}
|
2021-06-06 23:06:49 +02:00
|
|
|
|
|
|
|
|
/// Just some type alias.
|
|
|
|
|
pub type SomeType = u32;
|
2021-09-10 13:40:38 +02:00
|
|
|
|
|
|
|
|
pub mod huge_amount_of_consts {
|
|
|
|
|
include!(concat!(env!("OUT_DIR"), "/huge_amount_of_consts.rs"));
|
|
|
|
|
}
|
2021-10-07 17:26:24 +02:00
|
|
|
|
|
|
|
|
/// Very long code text `hereIgoWithLongTextBecauseWhyNotAndWhyWouldntI`.
|
|
|
|
|
pub mod long_code_block {}
|
2021-10-20 15:44:16 +02:00
|
|
|
|
|
|
|
|
#[macro_export]
|
|
|
|
|
macro_rules! repro {
|
|
|
|
|
() => {};
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
pub use crate::repro as repro2;
|
2021-10-22 13:45:10 -07:00
|
|
|
|
|
|
|
|
/// # Top-doc Prose title
|
|
|
|
|
///
|
|
|
|
|
/// Text below title.
|
|
|
|
|
///
|
|
|
|
|
/// ## Top-doc Prose sub-heading
|
|
|
|
|
///
|
|
|
|
|
/// Text below sub-heading.
|
|
|
|
|
///
|
|
|
|
|
/// ### Top-doc Prose sub-sub-heading
|
|
|
|
|
///
|
|
|
|
|
/// Text below sub-sub-heading
|
2022-07-27 15:36:43 +02:00
|
|
|
///
|
|
|
|
|
/// #### You know the drill.
|
|
|
|
|
///
|
|
|
|
|
/// More text.
|
2021-10-22 13:45:10 -07:00
|
|
|
pub struct HeavilyDocumentedStruct {
|
|
|
|
|
/// # Title for field
|
|
|
|
|
/// ## Sub-heading for field
|
|
|
|
|
pub nothing: (),
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// # Title for struct impl doc
|
|
|
|
|
///
|
|
|
|
|
/// Text below heading.
|
|
|
|
|
///
|
|
|
|
|
/// ## Sub-heading for struct impl doc
|
|
|
|
|
///
|
|
|
|
|
/// Text below sub-heading.
|
|
|
|
|
///
|
|
|
|
|
/// ### Sub-sub-heading for struct impl doc
|
|
|
|
|
///
|
|
|
|
|
/// Text below sub-sub-heading.
|
|
|
|
|
///
|
|
|
|
|
impl HeavilyDocumentedStruct {
|
|
|
|
|
/// # Title for struct impl-item doc
|
|
|
|
|
/// Text below title.
|
|
|
|
|
/// ## Sub-heading for struct impl-item doc
|
|
|
|
|
/// Text below sub-heading.
|
|
|
|
|
/// ### Sub-sub-heading for struct impl-item doc
|
|
|
|
|
/// Text below sub-sub-heading.
|
|
|
|
|
pub fn do_nothing() {}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// # Top-doc Prose title
|
|
|
|
|
///
|
|
|
|
|
/// Text below title.
|
|
|
|
|
///
|
|
|
|
|
/// ## Top-doc Prose sub-heading
|
|
|
|
|
///
|
|
|
|
|
/// Text below sub-heading.
|
|
|
|
|
///
|
|
|
|
|
/// ### Top-doc Prose sub-sub-heading
|
|
|
|
|
///
|
|
|
|
|
/// Text below sub-sub-heading
|
|
|
|
|
pub enum HeavilyDocumentedEnum {
|
|
|
|
|
/// # None prose title
|
|
|
|
|
/// ## None prose sub-heading
|
|
|
|
|
None,
|
|
|
|
|
/// # Wrapped prose title
|
|
|
|
|
/// ## Wrapped prose sub-heading
|
|
|
|
|
Wrapped(
|
|
|
|
|
/// # Wrapped.0 prose title
|
|
|
|
|
/// ## Wrapped.0 prose sub-heading
|
|
|
|
|
String,
|
|
|
|
|
String,
|
|
|
|
|
),
|
|
|
|
|
Structy {
|
|
|
|
|
/// # Structy prose title
|
|
|
|
|
/// ## Structy prose sub-heading
|
|
|
|
|
alpha: String,
|
|
|
|
|
beta: String,
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// # Title for enum impl doc
|
|
|
|
|
///
|
|
|
|
|
/// Text below heading.
|
|
|
|
|
///
|
|
|
|
|
/// ## Sub-heading for enum impl doc
|
|
|
|
|
///
|
|
|
|
|
/// Text below sub-heading.
|
|
|
|
|
///
|
|
|
|
|
/// ### Sub-sub-heading for enum impl doc
|
|
|
|
|
///
|
|
|
|
|
/// Text below sub-sub-heading.
|
|
|
|
|
///
|
|
|
|
|
impl HeavilyDocumentedEnum {
|
|
|
|
|
/// # Title for enum impl-item doc
|
|
|
|
|
/// Text below title.
|
|
|
|
|
/// ## Sub-heading for enum impl-item doc
|
|
|
|
|
/// Text below sub-heading.
|
|
|
|
|
/// ### Sub-sub-heading for enum impl-item doc
|
|
|
|
|
/// Text below sub-sub-heading.
|
|
|
|
|
pub fn do_nothing() {}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// # Top-doc prose title
|
|
|
|
|
///
|
|
|
|
|
/// Text below heading.
|
|
|
|
|
///
|
|
|
|
|
/// ## Top-doc prose sub-heading
|
|
|
|
|
///
|
|
|
|
|
/// Text below heading.
|
|
|
|
|
pub union HeavilyDocumentedUnion {
|
|
|
|
|
/// # Title for union variant
|
|
|
|
|
/// ## Sub-heading for union variant
|
|
|
|
|
pub nothing: (),
|
|
|
|
|
pub something: f32,
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// # Title for union impl doc
|
|
|
|
|
/// ## Sub-heading for union impl doc
|
|
|
|
|
impl HeavilyDocumentedUnion {
|
|
|
|
|
/// # Title for union impl-item doc
|
|
|
|
|
/// ## Sub-heading for union impl-item doc
|
|
|
|
|
pub fn do_nothing() {}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// # Top-doc prose title
|
|
|
|
|
///
|
|
|
|
|
/// Text below heading.
|
|
|
|
|
///
|
|
|
|
|
/// ## Top-doc prose sub-heading
|
|
|
|
|
///
|
|
|
|
|
/// Text below heading.
|
|
|
|
|
#[macro_export]
|
|
|
|
|
macro_rules! heavily_documented_macro {
|
|
|
|
|
() => {};
|
|
|
|
|
}
|
2022-02-07 22:36:51 -08:00
|
|
|
|
|
|
|
|
pub trait EmptyTrait1 {}
|
|
|
|
|
pub trait EmptyTrait2 {}
|
|
|
|
|
pub trait EmptyTrait3 {}
|
|
|
|
|
|
|
|
|
|
pub struct HasEmptyTraits{}
|
|
|
|
|
|
|
|
|
|
impl EmptyTrait1 for HasEmptyTraits {}
|
|
|
|
|
impl EmptyTrait2 for HasEmptyTraits {}
|
|
|
|
|
#[doc(cfg(feature = "some-feature"))]
|
|
|
|
|
impl EmptyTrait3 for HasEmptyTraits {}
|
2022-02-14 21:42:36 +01:00
|
|
|
|
|
|
|
|
mod macros;
|
|
|
|
|
pub use macros::*;
|
2022-05-05 21:56:40 +02:00
|
|
|
|
|
|
|
|
#[doc(alias = "AliasForTheStdReexport")]
|
|
|
|
|
pub use ::std as TheStdReexport;
|
2022-05-21 15:05:56 +02:00
|
|
|
|
|
|
|
|
pub mod details {
|
|
|
|
|
/// We check the appearance of the `<details>`/`<summary>` in here.
|
|
|
|
|
///
|
|
|
|
|
/// ## Hello
|
|
|
|
|
///
|
|
|
|
|
/// <details>
|
|
|
|
|
/// <summary><h4>I'm a summary</h4></summary>
|
|
|
|
|
/// <div>I'm the content of the details!</div>
|
|
|
|
|
/// </details>
|
|
|
|
|
pub struct Details;
|
|
|
|
|
}
|
2022-08-26 08:27:31 -07:00
|
|
|
|
|
|
|
|
pub mod doc_block_table {
|
|
|
|
|
|
|
|
|
|
pub trait DocBlockTableTrait {
|
|
|
|
|
fn func();
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Struct doc.
|
|
|
|
|
///
|
|
|
|
|
/// | header1 | header2 |
|
|
|
|
|
/// |--------------------------|--------------------------|
|
|
|
|
|
/// | Lorem Ipsum, Lorem Ipsum | Lorem Ipsum, Lorem Ipsum |
|
|
|
|
|
pub struct DocBlockTable {}
|
|
|
|
|
|
|
|
|
|
impl DocBlockTableTrait for DocBlockTable {
|
|
|
|
|
/// Trait impl func doc for struct.
|
|
|
|
|
///
|
|
|
|
|
/// | header1 | header2 |
|
|
|
|
|
/// |--------------------------|--------------------------|
|
|
|
|
|
/// | Lorem Ipsum, Lorem Ipsum | Lorem Ipsum, Lorem Ipsum |
|
|
|
|
|
fn func() {
|
|
|
|
|
println!();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|