1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91
//! Converts a sequence of arbitrary literal values into a single byte array at the compile time. //! //! List of supported literals: //! //! * UTF-8 characters (`'?'`) as well as UTF-8 strings (`"こんにちは世界"`). //! * Integers, also negative and size-suffixed (`-99u32`). //! * Non-suffixed integers are written in a form as small as possible. //! * The little endian is used as a default endianness but could be changed build-wise by //! enabling `default-big-endian` feature. //! * It is possible to set endianness for a single literal using the "ascription" //! syntax, e.g. `9000: LE` or `0x8u32: be`. //! * Floats, also negative and size-suffixed (`-3.1415926f64`). //! * Non-suffixed floats are written in a form as small as possible. //! * The little endian is used as a default endianness but could be changed build-wise by //! enabling `default-big-endian` feature. //! * It is possible to set endianness for a single literal using the "ascription" //! syntax, e.g. `0.2: LE` or `-15.92f64: be`. //! //! # Examples //! //! ``` //! #[macro_use] //! extern crate bytify; //! //! fn main() { //! assert_eq!(&bytify!( //! "The 🎂 is a lie!", //! 2948509150, -559038801: BE, //! 0.36658e+8, -2583.1f64: le, //! )[..], &[ //! b'T', b'h', b'e', b' ', //! 0xF0, 0x9F, 0x8E, 0x82, //! b' ', b'i', b's', b' ', b'a', b' ', b'l', b'i', b'e', b'!', //! 0xDE, 0xAD, 0xBE, 0xAF, 0xDE, 0xAD, 0xBE, 0xAF, //! 0xD4, 0xD6, 0x0B, 0x4C, 0x33, 0x33, 0x33, 0x33, 0x33, 0x2e, 0xa4, 0xc0, //! ][..]); //! } //! ``` #[macro_use] extern crate proc_macro_hack; #[allow(unused_imports)] #[cfg_attr(feature = "cargo-clippy", allow(useless_attribute))] #[macro_use] extern crate bytify_impl; #[doc(hidden)] pub use bytify_impl::*; proc_macro_expr_decl! { /// Converts a sequence of arbitrary literal values into a single byte array at the compile time. /// /// List of supported literals: /// /// * UTF-8 characters (`'?'`) as well as UTF-8 strings (`"こんにちは世界"`). /// * Integers, also negative and size-suffixed (`-99u32`). /// * Non-suffixed integers are written in a form as small as possible. /// * The little endian is used as a default endianness but could be changed build-wise by /// enabling `default-big-endian` feature. /// * It is possible to set endianness for a single literal using the "ascription" /// syntax, e.g. `9000: LE` or `0x8u32: be`. /// * Floats, also negative and size-suffixed (`-3.1415926f64`). /// * Non-suffixed floats are written in a form as small as possible. /// * The little endian is used as a default endianness but could be changed build-wise by /// enabling `default-big-endian` feature. /// * It is possible to set endianness for a single literal using the "ascription" /// syntax, e.g. `0.2: LE` or `-15.92f64: be`. /// /// # Examples /// /// ``` /// #[macro_use] /// extern crate bytify; /// /// fn main() { /// assert_eq!(&bytify!( /// "The 🎂 is a lie!", /// 2948509150, -559038801: BE, /// 0.36658e+8, -2583.1f64: le, /// )[..], &[ /// b'T', b'h', b'e', b' ', /// 0xF0, 0x9F, 0x8E, 0x82, /// b' ', b'i', b's', b' ', b'a', b' ', b'l', b'i', b'e', b'!', /// 0xDE, 0xAD, 0xBE, 0xAF, 0xDE, 0xAD, 0xBE, 0xAF, /// 0xD4, 0xD6, 0x0B, 0x4C, 0x33, 0x33, 0x33, 0x33, 0x33, 0x2e, 0xa4, 0xc0, /// ][..]); /// } /// ``` bytify! => bytify_inner }