11 releases
0.5.4 | Aug 12, 2022 |
---|---|
0.5.3 | Jan 20, 2022 |
0.5.2 | Dec 4, 2021 |
0.5.1 | Nov 25, 2021 |
0.1.0 | Jun 27, 2021 |
#955 in Encoding
79 downloads per month
7KB
nova
Create newtypes with great convenience.
All types generated by the following macros implement Debug
, Clone
, Eq
, PartialEq
, Ord
, PartialOrd
and Hash
. For Copy
types, the newtype also implements Copy
.
Usage
[dependencies]
nova = "0.4"
Example
use nova::newtype;
#[newtype(serde, borrow = "str")]
pub type Meow = String;
#[newtype(new, copy)]
pub(crate) type SpecialUuid = uuid::Uuid;
fn example() {
let meow = Meow("this is a string".to_string());
let special_uuid = SpecialUuid::from(uuid::Uuid::new_v4());
// Get inner:
let inner = special_uuid.into_inner();
}
Supported attributes
Crate compatibility attributes
- serde: enables support for the
serde
attribute to deriveSerialize
andDeserialize
for newtypes. - sqlx: enables support for the
sqlx
attribute to derivesqlx::Type
for newtypes. - async_graphql: enables support for the
async_graphql
attribute to implementScalar
for newtypes.
Generation attributes
- copy: derives
Copy
on the newtype. - opaque: disables generating a
Deref
andinto_inner
functions to create an opaque type. - borrow = "<type>": sets the type to be used for the
Deref
implementation, if needed. - new: create default construction
new
function andFrom
implementation. - derive(...): replace the default derives for the newtype with the provided list. Same syntax as the normal
#[derive(...)]
attribute.
License
This project is licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Dependencies
~2MB
~44K SLoC