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

#[repr(C)]
pub struct VersionStrings {
    pub version: StaticStr,
}

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: StaticStr

Methods

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

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 SharedStableAbi for VersionStrings[src]

type IsNonZeroType = False

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

type Kind = __ValueKind

The kind of abi stability of this type,there are 2: 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

type RBorrowed = &'a T

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

impl<This> GetConstGenericVTable for This where
    This: StableAbi + Eq + PartialEq<This> + Debug + Send + Sync
[src]

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

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

impl<This> StableAbi for This where
    This: SharedStableAbi<Kind = ValueKind>, 
[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