#![warn(missing_docs)]
#![no_std]
macro_rules! code_name { () => { "dia-semver" }}
macro_rules! version { () => { "11.0.1" }}
pub const NAME: &str = "Dia-Semver";
pub const CODE_NAME: &str = code_name!();
pub const ID: &str = concat!(
"af689fae-61017e3f-351f0b5a-2db0c53a-d2536361-c9b37bd2-db807b5d-c46e6e53-",
"ff22efd1-0f308e5a-8cfbb056-640af5db-7736e6eb-7f67b62a-be63deee-226e148c",
);
pub const VERSION: &str = version!();
pub const RELEASE_DATE: (u16, u8, u8) = (2022, 11, 28);
pub const TAG: &str = concat!(code_name!(), "::af689fae::", version!());
extern crate alloc;
#[cfg(feature="std")]
extern crate std;
macro_rules! err {
() => {
crate::Error::new(line!(), module_path!(), None)
};
($s: literal) => {
crate::Error::new(line!(), module_path!(), Some(alloc::borrow::Cow::Borrowed($s)))
};
($static_str: path) => {
crate::Error::new(line!(), module_path!(), Some(alloc::borrow::Cow::Borrowed($static_str)))
};
($s: literal, $($arg: tt)+) => {
crate::Error::new(line!(), module_path!(), Some(alloc::borrow::Cow::Owned(alloc::format!($s, $($arg)+))))
};
}
#[test]
fn test_macro_err() {
use alloc::borrow::Cow;
macro_rules! s_test { () => { "test" }}
fn eq(first: Error, second: Error) -> bool {
first.line() == second.line() && first.module_path() == second.module_path() && first.msg() == second.msg()
}
assert!(eq(err!(), Error::new(line!(), module_path!(), None)));
assert!(eq(err!("test"), Error::new(line!(), module_path!(), Some(Cow::Borrowed(s_test!())))));
assert!(eq(err!("{s:?}", s=s_test!()), Error::new(line!(), module_path!(), Some(Cow::Owned(alloc::format!("{:?}", s_test!()))))));
}
mod error;
mod pre_release;
mod range;
mod semver;
pub use self::{
error::*,
pre_release::*,
semver::*,
};
pub use self::{
range::*,
};
pub mod specification;
pub mod version_info;
pub type Result<T> = core::result::Result<T, Error>;
#[test]
fn test_crate_version() {
assert_eq!(VERSION, env!("CARGO_PKG_VERSION"));
}