Mercurial > crates > nonstick
view src/_doc.rs @ 141:a508a69c068a
Remove a lot of Results from functions.
Many functions are documented to only return failing Results when given
improper inputs or when there is a memory allocation failure (which
can be verified by looking at the source). In cases where we know our
input is correct, we don't need to check for memory allocation errors
for the same reason that Rust doesn't do so when you, e.g., create a
new Vec.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Sat, 05 Jul 2025 17:16:56 -0400 |
parents | 39760dfc9b3b |
children | 5c1e315c18ff |
line wrap: on
line source
//! A place to stick documentation stuff. /// Generates text lists of reference links for docs. /// /// Use this with the other doc macros for the correct link names. /// /// # Examples /// /// ```ignore /// # use nonstick::{linklist, stdlinks}; /// /// Here is a list of links: /// /// /// #[doc = linklist!(pam_get_authtok: man7, manbsd)] /// /// /// /// The links are defined in the `stdlinks!` invocation below: /// /// /// #[doc = stdlinks!(3 pam_get_authtok)] /// # fn do_whatever() {} /// ``` macro_rules! linklist { ($func:ident: adg$(, $rest:ident)*) => { concat!( "- [Application Developers' Guide on `", stringify!($func), "`][adg]\n", $crate::linklist!($func: $($rest),*) ) }; ($func:ident: mwg$(, $rest:ident)*) => { concat!( "- [Module Writers' Guide on `", stringify!($func), "`][mwg]\n", $crate::linklist!($func: $($rest),*) ) }; ($func:ident: _std$(, $rest:ident)*) => { $crate::linklist!($func: man7, manbsd, xsso$(, $rest)*) }; ($func:ident: man7$(, $rest:ident)*) => { concat!( "- [Linux-PAM manpage for `", stringify!($func), "`][man7]\n", $crate::linklist!($func: $($rest),*) ) }; ($func:ident: manbsd$(, $rest:ident)*) => { concat!( "- [OpenPAM manpage for `", stringify!($func), "`][manbsd]\n", $crate::linklist!($func: $($rest),*) ) }; ($func:ident: xsso$(, $rest:ident)*) => { concat!( "- [X/SSO spec for `", stringify!($func), "`][xsso]", $crate::linklist!($func: $($rest),*) ) }; ($func:ident:$(,)?) => { "" }; } /// Generates a Markdown link reference to one of the PAM guides. /// /// # Examples /// /// ```ignore /// # use nonstick::{guide}; /// /// See [the guide][mwg]. /// /// /// #[doc = guide!(mwg: "mwg-expected-by-module-item.html#mwg-pam_get_user")] /// # fn do_whatever() {} /// ``` macro_rules! guide { ($name:ident: $page_link:literal) => { concat!( "[", stringify!($name), "]: https://www.chiark.greenend.org.uk/doc/libpam-doc/html/", $page_link ) }; } /// Generates a Markdown link reference to the Linux man pages on man7.org. /// /// # Examples /// /// ```ignore /// # use nonstick::man7; /// /// This contains a [link to the man page for malloc][man7]. /// #[doc = man7!(3 malloc)] /// # fn do_whatever() {} /// /// /// This contains both a link to the ["structure" section of `hgrc`][man7] /// /// and a link to the ["environment" section of `systemd`][sysd_env]. /// /// /// #[doc = man7!(5 hgrc "STRUCTURE")] /// #[doc = man7!(sysd_env: 1 systemd "ENVIRONMENT")] /// # fn do_whatever2() {} /// ``` macro_rules! man7 { ($n:literal $fn:ident $($anchor:literal)?) => { $crate::man7!(man7: $n $fn $($anchor)?) }; ($name:ident: $n:literal $fn:ident $($anchor:literal)?) => { concat!( "[", stringify!($name), "]: ", "https://man7.org/linux/man-pages/man", $n, "/", stringify!($fn), ".", $n, ".html", $("#", $anchor)? ) }; } /// Generates a Markdown link reference to the NetBSD man pages. /// /// # Examples /// /// ```ignore /// # use nonstick::manbsd; /// // Both of these formulations create a link named `manbsd`. /// #[doc = manbsd!(3 fn_name)] /// #[doc = manbsd!(5 thing_name "SECTION")] /// // This one creates a link named `link_name`. /// #[doc = manbsd!(link_name: 1 prog_name "SECTION")] /// # fn do_whatever() {} /// ``` macro_rules! manbsd { ($n:literal $func:ident $($anchor:literal)?) => { $crate::manbsd!(manbsd: $n $func $($anchor)?) }; ($name:ident: $n:literal $func:ident $($anchor:literal)?) => { concat!("[", stringify!($name), "]: ", "https://man.netbsd.org/", stringify!($func), ".", $n, $("#", $anchor)? ) }; } /// Generates a Markdown link reference to the X/SSO specification. /// /// # Examples /// /// ```ignore /// # use nonstick::xsso; /// /// This docstring will [link to the X/SSO spec for `pam_set_item`][xsso]. /// /// /// #[doc = xsso!(pam_set_item)] /// # fn link_one() {} /// /// /// This docstring will link to [`some_page`][xsso]. /// /// I can also link to [the table of contents][spec_toc]. /// /// /// #[doc = xsso!("some_page.htm#section-id")] /// #[doc = xsso!(spec_toc: "toc.htm")] /// # fn do_whatever() {} /// ``` macro_rules! xsso { ($func:ident) => { $crate::xsso!(xsso: concat!(stringify!($func), ".htm")) }; ($page:literal) => { $crate::xsso!(xsso: $page) }; ($name:ident: $page:expr) => { concat!("[", stringify!($name), "]: https://pubs.opengroup.org/onlinepubs/8329799/", $page) }; } /// Generates Markdown link references to Linux-PAM, OpenPAM, and X/SSO. /// /// A shortcut to `man7!`, `manbsd!`, and `xsso!`. /// /// # Examples /// /// ```ignore /// # use nonstick::stdlinks; /// /// Check out [this][man7], [that][manbsd], or [the other][xsso]. /// /// /// #[doc = stdlinks!(3 pam_get_item)] /// # fn do_whatever() {} /// ``` macro_rules! stdlinks { ($n:literal $func:ident) => { concat!($crate::man7!($n $func), "\n", $crate::manbsd!($n $func), "\n", $crate::xsso!($func)) }; } pub(crate) use {guide, linklist, man7, manbsd, stdlinks, xsso};