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
//!
//! This crate provides three derive macros for crate `castflip`.
//!
//! Please refer to the documentation of `castflip`
//! at <https://docs.rs/castflip/> for more information.
//!
mod cast;
mod flip;
mod nop_flip;
use proc_macro::TokenStream;
///
/// Declares that the succeeding struct or union type is `encast`able
/// / `decast`able.
///
/// Please refer to the description of trait [`Cast`] in the
/// documentation of `castflip` at <https://docs.rs/castflip/>
///
/// [`Cast`]: https://docs.rs/castflip/latest/castflip/trait.Cast.html
///
#[proc_macro_derive(Cast)]
pub fn cast_derive(input: TokenStream) -> TokenStream {
cast::proc_tokens(input)
}
///
/// Declares that the succeeding struct type is `endian-flip`pable.
///
/// Please refer to the description of trait [`Flip`] in the
/// documentation of `castflip` at <https://docs.rs/castflip/>
///
/// [`Flip`]: https://docs.rs/castflip/latest/castflip/trait.Flip.html
///
#[proc_macro_derive(Flip)]
pub fn flip_derive(input: TokenStream) -> TokenStream {
flip::proc_tokens(input)
}
///
/// Declares that the succeeding struct or union type is is marked as
/// `endian-flip`pable but the implemented operation is Nop (No
/// operation).
///
/// Please refer to the description of trait [`NopFlip`] in the
/// documentation of `castflip` at <https://docs.rs/castflip/>
///
/// [`NopFlip`]: https://docs.rs/castflip/latest/castflip/trait.NopFlip.html
///
#[proc_macro_derive(NopFlip)]
pub fn nop_flip_derive(input: TokenStream) -> TokenStream {
nop_flip::proc_tokens(input)
}