rustfmt-nightly 1.1.1

Tool to find and fix Rust formatting issues
Documentation
// rustfmt-wrap_comments: true
// rustfmt-normalize_doc_attributes: true

// Only doc = "" attributes should be normalized
#![doc = " Example doc attribute comment"]
#![doc = "          Example doc attribute comment with 10 leading spaces"]
#![doc(html_logo_url = "https://www.rust-lang.org/logos/rust-logo-128x128-blk-v2.png",
       html_favicon_url = "https://doc.rust-lang.org/favicon.ico",
       html_root_url = "https://doc.rust-lang.org/nightly/",
       html_playground_url = "https://play.rust-lang.org/", test(attr(deny(warnings))))]


// Long `#[doc = "..."]`
struct A { #[doc = " xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"] b: i32 }


#[doc = " The `nodes` and `edges` method each return instantiations of `Cow<[T]>` to leave implementers the freedom to create entirely new vectors or to pass back slices into internally owned vectors."]
struct B { b: i32 }


#[doc = " Level 1 comment"]
mod tests {
    #[doc = " Level 2 comment"]
    impl A {
        #[doc = " Level 3 comment"]
        fn f() {
            #[doc = " Level 4 comment"]
            fn g() {
            }
        }
    }
}

struct C {
    #[doc = " item doc attrib comment"]
    // regular item comment
    b: i32,

    // regular item comment
    #[doc = " item doc attrib comment"]
    c: i32,
}

// non-regression test for regular attributes, from #2647
#[cfg(feature = "this_line_is_101_characters_long_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx")]
pub fn foo() {}

// path attrs
#[clippy::bar]
#[clippy::bar(a, b, c)]
pub fn foo() {}

mod issue_2620 {
    #[derive(Debug, StructOpt)]
#[structopt(about = "Display information about the character on FF Logs")]
pub struct Params {
  #[structopt(help = "The server the character is on")]
  server: String,
  #[structopt(help = "The character's first name")]
  first_name: String,
  #[structopt(help = "The character's last name")]
  last_name: String,
  #[structopt(
    short = "j",
    long = "job",
    help = "The job to look at",
    parse(try_from_str)
  )]
  job: Option<Job>
}
}

// non-regression test for regular attributes, from #2969
#[cfg(not(all(feature="std",
              any(target_os = "linux", target_os = "android",
                  target_os = "netbsd",
                  target_os = "dragonfly",
                  target_os = "haiku",
                  target_os = "emscripten",
                  target_os = "solaris",
                  target_os = "cloudabi",
                  target_os = "macos", target_os = "ios",
                  target_os = "freebsd",
                  target_os = "openbsd", target_os = "bitrig",
                  target_os = "redox",
                  target_os = "fuchsia",
                  windows,
                  all(target_arch = "wasm32", feature = "stdweb"),
                  all(target_arch = "wasm32", feature = "wasm-bindgen"),
              ))))]
type Os = NoSource;

// use cases from bindgen needing precise control over leading spaces
#[doc = " <div rustbindgen accessor></div>"]
#[repr(C)]
#[derive(Debug, Default, Copy, Clone)]
pub struct ContradictAccessors {
    #[doc = "<foo>no leading spaces here</foo>"]
    pub mBothAccessors: ::std::os::raw::c_int,
    #[doc = " <div rustbindgen accessor=\"false\"></div>"]
    pub mNoAccessors: ::std::os::raw::c_int,
    #[doc = " <div rustbindgen accessor=\"unsafe\"></div>"]
    pub mUnsafeAccessors: ::std::os::raw::c_int,
    #[doc = " <div rustbindgen accessor=\"immutable\"></div>"]
    pub mImmutableAccessor: ::std::os::raw::c_int,
}

#[doc = " \\brief          MPI structure"]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mbedtls_mpi {
    #[doc = "<  integer sign"]
    pub s: ::std::os::raw::c_int,
    #[doc = "<  total # of limbs"]
    pub n: ::std::os::raw::c_ulong,
    #[doc = "<  pointer to limbs"]
    pub p: *mut mbedtls_mpi_uint,
}