about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG.md3
-rw-r--r--clippy_lints/src/declared_lints.rs3
-rw-r--r--clippy_lints/src/endian_bytes.rs216
-rw-r--r--clippy_lints/src/lib.rs2
-rw-r--r--tests/ui/endian_bytes.rs127
-rw-r--r--tests/ui/endian_bytes.stderr1031
6 files changed, 1382 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 23d59fa31de..4648af231a4 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -4641,6 +4641,7 @@ Released 2018-09-13
 [`await_holding_lock`]: https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_lock
 [`await_holding_refcell_ref`]: https://rust-lang.github.io/rust-clippy/master/index.html#await_holding_refcell_ref
 [`bad_bit_mask`]: https://rust-lang.github.io/rust-clippy/master/index.html#bad_bit_mask
+[`big_endian_bytes`]: https://rust-lang.github.io/rust-clippy/master/index.html#big_endian_bytes
 [`bind_instead_of_map`]: https://rust-lang.github.io/rust-clippy/master/index.html#bind_instead_of_map
 [`blacklisted_name`]: https://rust-lang.github.io/rust-clippy/master/index.html#blacklisted_name
 [`blanket_clippy_restriction_lints`]: https://rust-lang.github.io/rust-clippy/master/index.html#blanket_clippy_restriction_lints
@@ -4811,6 +4812,7 @@ Released 2018-09-13
 [`get_first`]: https://rust-lang.github.io/rust-clippy/master/index.html#get_first
 [`get_last_with_len`]: https://rust-lang.github.io/rust-clippy/master/index.html#get_last_with_len
 [`get_unwrap`]: https://rust-lang.github.io/rust-clippy/master/index.html#get_unwrap
+[`host_endian_bytes`]: https://rust-lang.github.io/rust-clippy/master/index.html#host_endian_bytes
 [`identity_conversion`]: https://rust-lang.github.io/rust-clippy/master/index.html#identity_conversion
 [`identity_op`]: https://rust-lang.github.io/rust-clippy/master/index.html#identity_op
 [`if_let_mutex`]: https://rust-lang.github.io/rust-clippy/master/index.html#if_let_mutex
@@ -4892,6 +4894,7 @@ Released 2018-09-13
 [`let_with_type_underscore`]: https://rust-lang.github.io/rust-clippy/master/index.html#let_with_type_underscore
 [`lines_filter_map_ok`]: https://rust-lang.github.io/rust-clippy/master/index.html#lines_filter_map_ok
 [`linkedlist`]: https://rust-lang.github.io/rust-clippy/master/index.html#linkedlist
+[`little_endian_bytes`]: https://rust-lang.github.io/rust-clippy/master/index.html#little_endian_bytes
 [`logic_bug`]: https://rust-lang.github.io/rust-clippy/master/index.html#logic_bug
 [`lossy_float_literal`]: https://rust-lang.github.io/rust-clippy/master/index.html#lossy_float_literal
 [`macro_use_imports`]: https://rust-lang.github.io/rust-clippy/master/index.html#macro_use_imports
diff --git a/clippy_lints/src/declared_lints.rs b/clippy_lints/src/declared_lints.rs
index 01ef3ef431c..68272e1a77a 100644
--- a/clippy_lints/src/declared_lints.rs
+++ b/clippy_lints/src/declared_lints.rs
@@ -145,6 +145,9 @@ pub(crate) static LINTS: &[&crate::LintInfo] = &[
     crate::empty_drop::EMPTY_DROP_INFO,
     crate::empty_enum::EMPTY_ENUM_INFO,
     crate::empty_structs_with_brackets::EMPTY_STRUCTS_WITH_BRACKETS_INFO,
+    crate::endian_bytes::BIG_ENDIAN_BYTES_INFO,
+    crate::endian_bytes::HOST_ENDIAN_BYTES_INFO,
+    crate::endian_bytes::LITTLE_ENDIAN_BYTES_INFO,
     crate::entry::MAP_ENTRY_INFO,
     crate::enum_clike::ENUM_CLIKE_UNPORTABLE_VARIANT_INFO,
     crate::enum_variants::ENUM_VARIANT_NAMES_INFO,
diff --git a/clippy_lints/src/endian_bytes.rs b/clippy_lints/src/endian_bytes.rs
new file mode 100644
index 00000000000..f470987833e
--- /dev/null
+++ b/clippy_lints/src/endian_bytes.rs
@@ -0,0 +1,216 @@
+use crate::Lint;
+use clippy_utils::{diagnostics::span_lint_and_then, is_lint_allowed};
+use rustc_hir::{Expr, ExprKind};
+use rustc_lint::{LateContext, LateLintPass, LintContext};
+use rustc_middle::{lint::in_external_macro, ty::Ty};
+use rustc_session::{declare_lint_pass, declare_tool_lint};
+use rustc_span::Symbol;
+use std::borrow::Cow;
+
+declare_clippy_lint! {
+    /// ### What it does
+    /// Checks for the usage of the `to_ne_bytes` method and/or the function `from_ne_bytes`.
+    ///
+    /// ### Why is this bad?
+    /// It's not, but some may prefer to specify the target endianness explicitly.
+    ///
+    /// ### Example
+    /// ```rust,ignore
+    /// let _x = 2i32.to_ne_bytes();
+    /// let _y = 2i64.to_ne_bytes();
+    /// ```
+    #[clippy::version = "1.71.0"]
+    pub HOST_ENDIAN_BYTES,
+    restriction,
+    "disallows usage of the `to_ne_bytes` method"
+}
+
+declare_clippy_lint! {
+    /// ### What it does
+    /// Checks for the usage of the `to_le_bytes` method and/or the function `from_le_bytes`.
+    ///
+    /// ### Why is this bad?
+    /// It's not, but some may wish to lint usage of this method, either to suggest using the host
+    /// endianness or big endian.
+    ///
+    /// ### Example
+    /// ```rust,ignore
+    /// let _x = 2i32.to_le_bytes();
+    /// let _y = 2i64.to_le_bytes();
+    /// ```
+    #[clippy::version = "1.71.0"]
+    pub LITTLE_ENDIAN_BYTES,
+    restriction,
+    "disallows usage of the `to_le_bytes` method"
+}
+
+declare_clippy_lint! {
+    /// ### What it does
+    /// Checks for the usage of the `to_be_bytes` method and/or the function `from_be_bytes`.
+    ///
+    /// ### Why is this bad?
+    /// It's not, but some may wish to lint usage of this method, either to suggest using the host
+    /// endianness or little endian.
+    ///
+    /// ### Example
+    /// ```rust,ignore
+    /// let _x = 2i32.to_be_bytes();
+    /// let _y = 2i64.to_be_bytes();
+    /// ```
+    #[clippy::version = "1.71.0"]
+    pub BIG_ENDIAN_BYTES,
+    restriction,
+    "disallows usage of the `to_be_bytes` method"
+}
+
+declare_lint_pass!(EndianBytes => [HOST_ENDIAN_BYTES, LITTLE_ENDIAN_BYTES, BIG_ENDIAN_BYTES]);
+
+const HOST_NAMES: [&str; 2] = ["from_ne_bytes", "to_ne_bytes"];
+const LITTLE_NAMES: [&str; 2] = ["from_le_bytes", "to_le_bytes"];
+const BIG_NAMES: [&str; 2] = ["from_be_bytes", "to_be_bytes"];
+
+#[derive(Clone, Debug)]
+enum LintKind {
+    Host,
+    Little,
+    Big,
+}
+
+#[derive(Clone, Copy, PartialEq)]
+enum Prefix {
+    From,
+    To,
+}
+
+impl LintKind {
+    fn allowed(&self, cx: &LateContext<'_>, expr: &Expr<'_>) -> bool {
+        is_lint_allowed(cx, self.as_lint(), expr.hir_id)
+    }
+
+    fn as_lint(&self) -> &'static Lint {
+        match self {
+            LintKind::Host => HOST_ENDIAN_BYTES,
+            LintKind::Little => LITTLE_ENDIAN_BYTES,
+            LintKind::Big => BIG_ENDIAN_BYTES,
+        }
+    }
+
+    fn as_name(&self, prefix: Prefix) -> &str {
+        let index = usize::from(prefix == Prefix::To);
+
+        match self {
+            LintKind::Host => HOST_NAMES[index],
+            LintKind::Little => LITTLE_NAMES[index],
+            LintKind::Big => BIG_NAMES[index],
+        }
+    }
+}
+
+impl LateLintPass<'_> for EndianBytes {
+    fn check_expr(&mut self, cx: &LateContext<'_>, expr: &Expr<'_>) {
+        if in_external_macro(cx.sess(), expr.span) {
+            return;
+        }
+
+        if_chain! {
+            if let ExprKind::MethodCall(method_name, receiver, args, ..) = expr.kind;
+            if args.is_empty();
+            let ty = cx.typeck_results().expr_ty(receiver);
+            if ty.is_primitive_ty();
+            if maybe_lint_endian_bytes(cx, expr, Prefix::To, method_name.ident.name, ty);
+            then {
+                return;
+            }
+        }
+
+        if_chain! {
+            if let ExprKind::Call(function, ..) = expr.kind;
+            if let ExprKind::Path(qpath) = function.kind;
+            if let Some(def_id) = cx.qpath_res(&qpath, function.hir_id).opt_def_id();
+            if let Some(function_name) = cx.get_def_path(def_id).last();
+            let ty = cx.typeck_results().expr_ty(expr);
+            if ty.is_primitive_ty();
+            then {
+                maybe_lint_endian_bytes(cx, expr, Prefix::From, *function_name, ty);
+            }
+        }
+    }
+}
+
+fn maybe_lint_endian_bytes(cx: &LateContext<'_>, expr: &Expr<'_>, prefix: Prefix, name: Symbol, ty: Ty<'_>) -> bool {
+    let ne = LintKind::Host.as_name(prefix);
+    let le = LintKind::Little.as_name(prefix);
+    let be = LintKind::Big.as_name(prefix);
+
+    let (lint, other_lints) = match name.as_str() {
+        name if name == ne => ((&LintKind::Host), [(&LintKind::Little), (&LintKind::Big)]),
+        name if name == le => ((&LintKind::Little), [(&LintKind::Host), (&LintKind::Big)]),
+        name if name == be => ((&LintKind::Big), [(&LintKind::Host), (&LintKind::Little)]),
+        _ => return false,
+    };
+
+    let mut help = None;
+
+    'build_help: {
+        // all lints disallowed, don't give help here
+        if [&[lint], other_lints.as_slice()]
+            .concat()
+            .iter()
+            .all(|lint| !lint.allowed(cx, expr))
+        {
+            break 'build_help;
+        }
+
+        // ne_bytes and all other lints allowed
+        if lint.as_name(prefix) == ne && other_lints.iter().all(|lint| lint.allowed(cx, expr)) {
+            help = Some(Cow::Borrowed("specify the desired endianness explicitly"));
+            break 'build_help;
+        }
+
+        // le_bytes where ne_bytes allowed but be_bytes is not, or le_bytes where ne_bytes allowed but
+        // le_bytes is not
+        if (lint.as_name(prefix) == le || lint.as_name(prefix) == be) && LintKind::Host.allowed(cx, expr) {
+            help = Some(Cow::Borrowed("use the native endianness instead"));
+            break 'build_help;
+        }
+
+        let allowed_lints = other_lints.iter().filter(|lint| lint.allowed(cx, expr));
+        let len = allowed_lints.clone().count();
+
+        let mut help_str = "use ".to_owned();
+
+        for (i, lint) in allowed_lints.enumerate() {
+            let only_one = len == 1;
+            if !only_one {
+                help_str.push_str("either of ");
+            }
+
+            help_str.push_str(&format!("`{ty}::{}` ", lint.as_name(prefix)));
+
+            if i != len && !only_one {
+                help_str.push_str("or ");
+            }
+        }
+
+        help = Some(Cow::Owned(help_str + "instead"));
+    }
+
+    span_lint_and_then(
+        cx,
+        lint.as_lint(),
+        expr.span,
+        &format!(
+            "usage of the {}`{ty}::{}`{}",
+            if prefix == Prefix::From { "function " } else { "" },
+            lint.as_name(prefix),
+            if prefix == Prefix::To { " method" } else { "" },
+        ),
+        move |diag| {
+            if let Some(help) = help {
+                diag.help(help);
+            }
+        },
+    );
+
+    true
+}
diff --git a/clippy_lints/src/lib.rs b/clippy_lints/src/lib.rs
index 43ab8a96d86..222b0cc0921 100644
--- a/clippy_lints/src/lib.rs
+++ b/clippy_lints/src/lib.rs
@@ -114,6 +114,7 @@ mod else_if_without_else;
 mod empty_drop;
 mod empty_enum;
 mod empty_structs_with_brackets;
+mod endian_bytes;
 mod entry;
 mod enum_clike;
 mod enum_variants;
@@ -1010,6 +1011,7 @@ pub fn register_plugins(store: &mut rustc_lint::LintStore, sess: &Session, conf:
     store.register_late_pass(|_| Box::new(default_constructed_unit_structs::DefaultConstructedUnitStructs));
     store.register_early_pass(|| Box::new(needless_else::NeedlessElse));
     store.register_late_pass(|_| Box::new(missing_fields_in_debug::MissingFieldsInDebug));
+    store.register_late_pass(|_| Box::new(endian_bytes::EndianBytes));
     // add lints here, do not remove this comment, it's used in `new_lint`
 }
 
diff --git a/tests/ui/endian_bytes.rs b/tests/ui/endian_bytes.rs
new file mode 100644
index 00000000000..6bf014fc809
--- /dev/null
+++ b/tests/ui/endian_bytes.rs
@@ -0,0 +1,127 @@
+#![allow(unused)]
+#![allow(clippy::diverging_sub_expression)]
+#![no_main]
+
+macro_rules! fn_body {
+    () => {
+        2u8.to_ne_bytes();
+        2i8.to_ne_bytes();
+        2u16.to_ne_bytes();
+        2i16.to_ne_bytes();
+        2u32.to_ne_bytes();
+        2i32.to_ne_bytes();
+        2u64.to_ne_bytes();
+        2i64.to_ne_bytes();
+        2u128.to_ne_bytes();
+        2i128.to_ne_bytes();
+        2.0f32.to_ne_bytes();
+        2.0f64.to_ne_bytes();
+        2usize.to_ne_bytes();
+        2isize.to_ne_bytes();
+        u8::from_ne_bytes(todo!());
+        i8::from_ne_bytes(todo!());
+        u16::from_ne_bytes(todo!());
+        i16::from_ne_bytes(todo!());
+        u32::from_ne_bytes(todo!());
+        i32::from_ne_bytes(todo!());
+        u64::from_ne_bytes(todo!());
+        i64::from_ne_bytes(todo!());
+        u128::from_ne_bytes(todo!());
+        i128::from_ne_bytes(todo!());
+        usize::from_ne_bytes(todo!());
+        isize::from_ne_bytes(todo!());
+        f32::from_ne_bytes(todo!());
+        f64::from_ne_bytes(todo!());
+
+        2u8.to_le_bytes();
+        2i8.to_le_bytes();
+        2u16.to_le_bytes();
+        2i16.to_le_bytes();
+        2u32.to_le_bytes();
+        2i32.to_le_bytes();
+        2u64.to_le_bytes();
+        2i64.to_le_bytes();
+        2u128.to_le_bytes();
+        2i128.to_le_bytes();
+        2.0f32.to_le_bytes();
+        2.0f64.to_le_bytes();
+        2usize.to_le_bytes();
+        2isize.to_le_bytes();
+        u8::from_le_bytes(todo!());
+        i8::from_le_bytes(todo!());
+        u16::from_le_bytes(todo!());
+        i16::from_le_bytes(todo!());
+        u32::from_le_bytes(todo!());
+        i32::from_le_bytes(todo!());
+        u64::from_le_bytes(todo!());
+        i64::from_le_bytes(todo!());
+        u128::from_le_bytes(todo!());
+        i128::from_le_bytes(todo!());
+        usize::from_le_bytes(todo!());
+        isize::from_le_bytes(todo!());
+        f32::from_le_bytes(todo!());
+        f64::from_le_bytes(todo!());
+    };
+}
+
+// bless breaks if I use fn_body too much (oops)
+macro_rules! fn_body_smol {
+    () => {
+        2u8.to_ne_bytes();
+        u8::from_ne_bytes(todo!());
+
+        2u8.to_le_bytes();
+        u8::from_le_bytes(todo!());
+
+        2u8.to_be_bytes();
+        u8::from_be_bytes(todo!());
+    };
+}
+
+#[rustfmt::skip]
+#[warn(clippy::host_endian_bytes)]
+fn host() { fn_body!(); }
+
+#[rustfmt::skip]
+#[warn(clippy::little_endian_bytes)]
+fn little() { fn_body!(); }
+
+#[rustfmt::skip]
+#[warn(clippy::big_endian_bytes)]
+fn big() { fn_body!(); }
+
+#[rustfmt::skip]
+#[warn(clippy::host_endian_bytes)]
+#[warn(clippy::big_endian_bytes)]
+fn host_encourage_little() { fn_body_smol!(); }
+
+#[rustfmt::skip]
+#[warn(clippy::host_endian_bytes)]
+#[warn(clippy::little_endian_bytes)]
+fn host_encourage_big() { fn_body_smol!(); }
+
+#[rustfmt::skip]
+#[warn(clippy::host_endian_bytes)]
+#[warn(clippy::little_endian_bytes)]
+#[warn(clippy::big_endian_bytes)]
+fn no_help() { fn_body_smol!(); }
+
+#[rustfmt::skip]
+#[warn(clippy::little_endian_bytes)]
+#[warn(clippy::big_endian_bytes)]
+fn little_encourage_host() { fn_body_smol!(); }
+
+#[rustfmt::skip]
+#[warn(clippy::host_endian_bytes)]
+#[warn(clippy::little_endian_bytes)]
+fn little_encourage_big() { fn_body_smol!(); }
+
+#[rustfmt::skip]
+#[warn(clippy::big_endian_bytes)]
+#[warn(clippy::little_endian_bytes)]
+fn big_encourage_host() { fn_body_smol!(); }
+
+#[rustfmt::skip]
+#[warn(clippy::host_endian_bytes)]
+#[warn(clippy::big_endian_bytes)]
+fn big_encourage_little() { fn_body_smol!(); }
diff --git a/tests/ui/endian_bytes.stderr b/tests/ui/endian_bytes.stderr
new file mode 100644
index 00000000000..5e64ea5b5ab
--- /dev/null
+++ b/tests/ui/endian_bytes.stderr
@@ -0,0 +1,1031 @@
+error: usage of the `u8::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:7:9
+   |
+LL |         2u8.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: `-D clippy::host-endian-bytes` implied by `-D warnings`
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `i8::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:8:9
+   |
+LL |         2i8.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u16::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:9:9
+   |
+LL |         2u16.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `i16::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:10:9
+   |
+LL |         2i16.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u32::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:11:9
+   |
+LL |         2u32.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `i32::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:12:9
+   |
+LL |         2i32.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u64::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:13:9
+   |
+LL |         2u64.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `i64::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:14:9
+   |
+LL |         2i64.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u128::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:15:9
+   |
+LL |         2u128.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `i128::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:16:9
+   |
+LL |         2i128.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `f32::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:17:9
+   |
+LL |         2.0f32.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `f64::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:18:9
+   |
+LL |         2.0f64.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `usize::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:19:9
+   |
+LL |         2usize.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `isize::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:20:9
+   |
+LL |         2isize.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:21:9
+   |
+LL |         u8::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `i8::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:22:9
+   |
+LL |         i8::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u16::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:23:9
+   |
+LL |         u16::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `i16::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:24:9
+   |
+LL |         i16::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u32::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:25:9
+   |
+LL |         u32::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `i32::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:26:9
+   |
+LL |         i32::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u64::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:27:9
+   |
+LL |         u64::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `i64::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:28:9
+   |
+LL |         i64::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u128::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:29:9
+   |
+LL |         u128::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `i128::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:30:9
+   |
+LL |         i128::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `usize::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:31:9
+   |
+LL |         usize::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `isize::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:32:9
+   |
+LL |         isize::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `f32::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:33:9
+   |
+LL |         f32::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `f64::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:34:9
+   |
+LL |         f64::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host() { fn_body!(); }
+   |             ---------- in this macro invocation
+   |
+   = help: specify the desired endianness explicitly
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:36:9
+   |
+LL |         2u8.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: `-D clippy::little-endian-bytes` implied by `-D warnings`
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `i8::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:37:9
+   |
+LL |         2i8.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u16::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:38:9
+   |
+LL |         2u16.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `i16::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:39:9
+   |
+LL |         2i16.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u32::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:40:9
+   |
+LL |         2u32.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `i32::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:41:9
+   |
+LL |         2i32.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u64::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:42:9
+   |
+LL |         2u64.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `i64::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:43:9
+   |
+LL |         2i64.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u128::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:44:9
+   |
+LL |         2u128.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `i128::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:45:9
+   |
+LL |         2i128.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `f32::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:46:9
+   |
+LL |         2.0f32.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `f64::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:47:9
+   |
+LL |         2.0f64.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `usize::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:48:9
+   |
+LL |         2usize.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `isize::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:49:9
+   |
+LL |         2isize.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_le_bytes`
+  --> $DIR/endian_bytes.rs:50:9
+   |
+LL |         u8::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `i8::from_le_bytes`
+  --> $DIR/endian_bytes.rs:51:9
+   |
+LL |         i8::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u16::from_le_bytes`
+  --> $DIR/endian_bytes.rs:52:9
+   |
+LL |         u16::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `i16::from_le_bytes`
+  --> $DIR/endian_bytes.rs:53:9
+   |
+LL |         i16::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u32::from_le_bytes`
+  --> $DIR/endian_bytes.rs:54:9
+   |
+LL |         u32::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `i32::from_le_bytes`
+  --> $DIR/endian_bytes.rs:55:9
+   |
+LL |         i32::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u64::from_le_bytes`
+  --> $DIR/endian_bytes.rs:56:9
+   |
+LL |         u64::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `i64::from_le_bytes`
+  --> $DIR/endian_bytes.rs:57:9
+   |
+LL |         i64::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u128::from_le_bytes`
+  --> $DIR/endian_bytes.rs:58:9
+   |
+LL |         u128::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `i128::from_le_bytes`
+  --> $DIR/endian_bytes.rs:59:9
+   |
+LL |         i128::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `usize::from_le_bytes`
+  --> $DIR/endian_bytes.rs:60:9
+   |
+LL |         usize::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `isize::from_le_bytes`
+  --> $DIR/endian_bytes.rs:61:9
+   |
+LL |         isize::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `f32::from_le_bytes`
+  --> $DIR/endian_bytes.rs:62:9
+   |
+LL |         f32::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `f64::from_le_bytes`
+  --> $DIR/endian_bytes.rs:63:9
+   |
+LL |         f64::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little() { fn_body!(); }
+   |               ---------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:70:9
+   |
+LL |         2u8.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn host_encourage_little() { fn_body_smol!(); }
+   |                              --------------- in this macro invocation
+   |
+   = help: use `u8::to_le_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:71:9
+   |
+LL |         u8::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host_encourage_little() { fn_body_smol!(); }
+   |                              --------------- in this macro invocation
+   |
+   = help: use `u8::from_le_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_be_bytes` method
+  --> $DIR/endian_bytes.rs:76:9
+   |
+LL |         2u8.to_be_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn host_encourage_little() { fn_body_smol!(); }
+   |                              --------------- in this macro invocation
+   |
+   = help: use `u8::to_le_bytes` instead
+   = note: `-D clippy::big-endian-bytes` implied by `-D warnings`
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_be_bytes`
+  --> $DIR/endian_bytes.rs:77:9
+   |
+LL |         u8::from_be_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host_encourage_little() { fn_body_smol!(); }
+   |                              --------------- in this macro invocation
+   |
+   = help: use `u8::from_le_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:70:9
+   |
+LL |         2u8.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn host_encourage_big() { fn_body_smol!(); }
+   |                           --------------- in this macro invocation
+   |
+   = help: use `u8::to_be_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:71:9
+   |
+LL |         u8::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host_encourage_big() { fn_body_smol!(); }
+   |                           --------------- in this macro invocation
+   |
+   = help: use `u8::from_be_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:73:9
+   |
+LL |         2u8.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn host_encourage_big() { fn_body_smol!(); }
+   |                           --------------- in this macro invocation
+   |
+   = help: use `u8::to_be_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_le_bytes`
+  --> $DIR/endian_bytes.rs:74:9
+   |
+LL |         u8::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn host_encourage_big() { fn_body_smol!(); }
+   |                           --------------- in this macro invocation
+   |
+   = help: use `u8::from_be_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:70:9
+   |
+LL |         2u8.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn no_help() { fn_body_smol!(); }
+   |                --------------- in this macro invocation
+   |
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:71:9
+   |
+LL |         u8::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn no_help() { fn_body_smol!(); }
+   |                --------------- in this macro invocation
+   |
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:73:9
+   |
+LL |         2u8.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn no_help() { fn_body_smol!(); }
+   |                --------------- in this macro invocation
+   |
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_le_bytes`
+  --> $DIR/endian_bytes.rs:74:9
+   |
+LL |         u8::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn no_help() { fn_body_smol!(); }
+   |                --------------- in this macro invocation
+   |
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_be_bytes` method
+  --> $DIR/endian_bytes.rs:76:9
+   |
+LL |         2u8.to_be_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn no_help() { fn_body_smol!(); }
+   |                --------------- in this macro invocation
+   |
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_be_bytes`
+  --> $DIR/endian_bytes.rs:77:9
+   |
+LL |         u8::from_be_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn no_help() { fn_body_smol!(); }
+   |                --------------- in this macro invocation
+   |
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:73:9
+   |
+LL |         2u8.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn little_encourage_host() { fn_body_smol!(); }
+   |                              --------------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_le_bytes`
+  --> $DIR/endian_bytes.rs:74:9
+   |
+LL |         u8::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little_encourage_host() { fn_body_smol!(); }
+   |                              --------------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_be_bytes` method
+  --> $DIR/endian_bytes.rs:76:9
+   |
+LL |         2u8.to_be_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn little_encourage_host() { fn_body_smol!(); }
+   |                              --------------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_be_bytes`
+  --> $DIR/endian_bytes.rs:77:9
+   |
+LL |         u8::from_be_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little_encourage_host() { fn_body_smol!(); }
+   |                              --------------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:70:9
+   |
+LL |         2u8.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn little_encourage_big() { fn_body_smol!(); }
+   |                             --------------- in this macro invocation
+   |
+   = help: use `u8::to_be_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:71:9
+   |
+LL |         u8::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little_encourage_big() { fn_body_smol!(); }
+   |                             --------------- in this macro invocation
+   |
+   = help: use `u8::from_be_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:73:9
+   |
+LL |         2u8.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn little_encourage_big() { fn_body_smol!(); }
+   |                             --------------- in this macro invocation
+   |
+   = help: use `u8::to_be_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_le_bytes`
+  --> $DIR/endian_bytes.rs:74:9
+   |
+LL |         u8::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn little_encourage_big() { fn_body_smol!(); }
+   |                             --------------- in this macro invocation
+   |
+   = help: use `u8::from_be_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_le_bytes` method
+  --> $DIR/endian_bytes.rs:73:9
+   |
+LL |         2u8.to_le_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn big_encourage_host() { fn_body_smol!(); }
+   |                           --------------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_le_bytes`
+  --> $DIR/endian_bytes.rs:74:9
+   |
+LL |         u8::from_le_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn big_encourage_host() { fn_body_smol!(); }
+   |                           --------------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_be_bytes` method
+  --> $DIR/endian_bytes.rs:76:9
+   |
+LL |         2u8.to_be_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn big_encourage_host() { fn_body_smol!(); }
+   |                           --------------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_be_bytes`
+  --> $DIR/endian_bytes.rs:77:9
+   |
+LL |         u8::from_be_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn big_encourage_host() { fn_body_smol!(); }
+   |                           --------------- in this macro invocation
+   |
+   = help: use the native endianness instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_ne_bytes` method
+  --> $DIR/endian_bytes.rs:70:9
+   |
+LL |         2u8.to_ne_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn big_encourage_little() { fn_body_smol!(); }
+   |                             --------------- in this macro invocation
+   |
+   = help: use `u8::to_le_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_ne_bytes`
+  --> $DIR/endian_bytes.rs:71:9
+   |
+LL |         u8::from_ne_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn big_encourage_little() { fn_body_smol!(); }
+   |                             --------------- in this macro invocation
+   |
+   = help: use `u8::from_le_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the `u8::to_be_bytes` method
+  --> $DIR/endian_bytes.rs:76:9
+   |
+LL |         2u8.to_be_bytes();
+   |         ^^^^^^^^^^^^^^^^^
+...
+LL | fn big_encourage_little() { fn_body_smol!(); }
+   |                             --------------- in this macro invocation
+   |
+   = help: use `u8::to_le_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: usage of the function `u8::from_be_bytes`
+  --> $DIR/endian_bytes.rs:77:9
+   |
+LL |         u8::from_be_bytes(todo!());
+   |         ^^^^^^^^^^^^^^^^^^^^^^^^^^
+...
+LL | fn big_encourage_little() { fn_body_smol!(); }
+   |                             --------------- in this macro invocation
+   |
+   = help: use `u8::from_le_bytes` instead
+   = note: this error originates in the macro `fn_body_smol` (in Nightly builds, run with -Z macro-backtrace for more info)
+
+error: aborting due to 86 previous errors
+