[][src]Struct abi_stable::sabi_types::version::VersionStrings

#[repr(transparent)]pub struct VersionStrings {
    pub version: RStr<'static>,
}

The <major>.<minor>.<patch> version of a library,

Post 1.0 major version

Major versions are mutually incompatible for both users and implementors.

Minor allow users to have a version less than or equal to that of the implementor, and disallows implementors from making changes that would break any previous minor release (with the same major number).

Patch cannot change the api/abi of the library at all,fixes only.

Pre 1.0 version

Minor versions are mutually incompatible for both users and implementors.

Patch cannot change the api/abi of the library at all,fixes only.

Example

use abi_stable::sabi_types::VersionStrings;

let v1_0_0=VersionStrings::new("1.0.0").parsed().unwrap();
let v1_0_5=VersionStrings::new("1.0.5").parsed().unwrap();
let v1_1_0=VersionStrings::new("1.1.0").parsed().unwrap();
let v2_0_0=VersionStrings::new("1.0.5").parsed().unwrap();


assert!(  v1_0_0.is_compatible(v1_0_5),"'{}' '{}'",v1_0_0,v1_0_5);
assert!(  v1_0_5.is_compatible(v1_1_0),"'{}' '{}'",v1_0_5,v1_1_0);
assert!( !v1_1_0.is_compatible(v2_0_0),"'{}' '{}'",v1_1_0,v2_0_0);

Fields

version: RStr<'static>

Implementations

impl VersionStrings[src]

pub const fn new(version: &'static str) -> Self[src]

Constructs a VersionStrings from a string with the "major.minor.patch" format,where each one is a valid number.

This does not check whether the string is correctly formatted, that check is done inside VersionStrings::parsed/VersionNumber::new.

Example

use abi_stable::sabi_types::VersionStrings;
 
static VERSION:VersionStrings=VersionStrings::new("0.1.2");
 

pub fn parsed(self) -> Result<VersionNumber, ParseVersionError>[src]

Attempts to convert a VersionStrings into a VersionNumber

Errors

This returns a ParseVersionError if the string is not correctly formatted.

Example

use abi_stable::sabi_types::{VersionNumber,VersionStrings};
 
static VERSION:VersionStrings=VersionStrings::new("0.1.2");
 
assert_eq!( VERSION.parsed(), Ok(VersionNumber{major:0,minor:1,patch:2}) );

let err_version=VersionStrings::new("0.a.2.b");
assert!( err_version.parsed().is_err() );
 

Trait Implementations

impl Clone for VersionStrings[src]

impl Copy for VersionStrings[src]

impl Debug for VersionStrings[src]

impl Display for VersionStrings[src]

impl Eq for VersionStrings[src]

impl GetStaticEquivalent_ for VersionStrings[src]

type StaticEquivalent = _static_VersionStrings

impl PartialEq<VersionStrings> for VersionStrings[src]

impl StableAbi for VersionStrings[src]

type IsNonZeroType = <RStr<'static> as __StableAbi>::IsNonZeroType

Whether this type has a single invalid bit-pattern. Read more

impl StructuralEq for VersionStrings[src]

impl StructuralPartialEq for VersionStrings[src]

Auto Trait Implementations

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<'a, T> BorrowOwned<'a> for T where
    T: 'a + Clone
[src]

type ROwned = T

The owned type, stored in RCow::Owned

type RBorrowed = &'a T

The borrowed type, stored in RCow::Borrowed

impl<T> From<T> for T[src]

impl<T> GetWithMetadata for T[src]

type ForSelf = WithMetadata_<T, T>

This is always WithMetadata_<Self, Self>

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> SelfOps for T where
    T: ?Sized
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<This> TransmuteElement for This where
    This: ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

type Error = <U as TryFrom<T>>::Error

The error type returned when the conversion fails.

impl<T> TypeIdentity for T where
    T: ?Sized
[src]

type Type = T

The same type as Self. Read more

impl<This> ValidTag_Bounds for This where
    This: Debug + Clone + PartialEq<This>, 
[src]