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
// Rust language amplification library providing multiple generic trait
// implementations, type wrappers, derive macros and other language enhancements
//
// Written in 2019-2020 by
// Dr. Maxim Orlovsky <orlovsky@ubideco.org>
// Martin Habovstiak <martin.habovstiak@gmail.com>
//
// To the extent possible under law, the author(s) have dedicated all
// copyright and related and neighboring rights to this software to
// the public domain worldwide. This software is distributed without
// any warranty.
//
// You should have received a copy of the MIT License
// along with this software.
// If not, see <https://opensource.org/licenses/MIT>.
/// Macro for quick & simple `&str` -> `String` conversion:
/// ```
/// #[macro_use]
/// extern crate amplify;
///
/// # fn main() {
/// enum Error {
/// Io(String),
/// }
///
/// impl From<std::io::Error> for Error {
/// fn from(err: std::io::Error) -> Error {
/// Self::Io(s!("I/O error"))
/// }
/// }
/// # }
/// ```
#[macro_export]
macro_rules! s {
( $str:literal ) => {
String::from($str)
};
}
/// This macro allows more semantically-clear code (which can be used especially
/// with structure initialization), indicating that instead of type value we are
/// generating no value at all (empty collection or data structure filled with
/// information indicating absence of data)
#[macro_export]
macro_rules! none {
() => {
Default::default()
};
}
/// This macro allows more semantically-clear code (which can be used especially
/// with structure initialization), indicating that instead of type value we are
/// generating zero values (int types or byte slices filled with zeros)
#[macro_export]
macro_rules! zero {
() => {
Default::default()
};
}
/// This macro allows more semantically-clear code (which can be used especially
/// with structure initialization), indicating that instead of type value we are
/// generating empty collection types
#[macro_export]
macro_rules! empty {
() => {
Default::default()
};
}
/// Shorthand for `Default::default()`
#[macro_export]
macro_rules! default {
() => {
Default::default()
};
}
/// Shorthand for `Dumb::dumb()`
#[macro_export]
macro_rules! dumb {
() => {
$crate::Dumb::dumb()
};
}