Skip to content

hanyu-dev/wrapper-lite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

wrapper-lite

GitHub Tag

The new type idiom gives compile time guarantees that the right type of value is supplied to a program.

This crate provides a simple macro for you to create a wrapper over any type.

Notable changes since v0.3.0

  • Starting from v0.3.1, the complex usage now accept any inner field name (but must be the first one).

    wrapper_lite::wrapper!(
        #[wrapper_impl(AsRef<str>)]
        pub struct TestWrapperComplex {
            value: String, // <-- can be any name now, not necessarily "inner"
            _marker: ::core::marker::PhantomData<()>,
        }
    );
  • In v0.3.1, we introduce #[repr(align(cache))] attribute for the wrapper struct.

    wrapper_lite::wrapper!(
        #[repr(align(cache))]
        pub struct AlignedWrapper(u8);
    );

    See the docs for usage details.

Migrate from v0.2.X

  1. The macro now only accepts valid Rust struct syntax.

    wrapper_lite::wrapper!(
        pub struct TestWrapper1(u8); // <-- note the semicolon, now it's required
    );
    wrapper_lite::wrapper!(
        pub struct TestWrapper2 {
            inner: u8,
        }
    );
  2. When there's no default value specified, we cannot implement the From trait for the wrapper type, and now it's a hard error.

    wrapper_lite::wrapper!(
        #[wrapper_impl(From)]
        pub struct TestWrapperComplex<'a, 'b> {
            inner: String,
            _a: ::core::marker::PhantomData<&'a ()>,
            _b: ::core::marker::PhantomData<&'b ()>,
        }
    );

Migrate from v0.1.X

To make cargo-fmt happy, starting from v0.2.0, the following usage which is not a valid Rust struct syntax is no longer accepted.

wrapper_lite::wrapper!(
    pub ExampleWrapper(u8)
);

Instead:

wrapper_lite::wrapper!(
    pub struct ExampleWrapper(u8);
);

Now we can format the macro content with cargo fmt!

License

Licensed under either of:

at your option.

About

No description, website, or topics provided.

Resources

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT

Stars

Watchers

Forks

Packages

No packages published

Languages