pub struct OsVersion { /* private fields */ }Available on crate feature
sys only.Expand description
Operating system version.
This type provides type-safe OS version numbers with up to three components: major, minor, and optional patch version.
§Invariants
- Major and minor versions are always present (u16)
- Patch version is optional (Some(u16) or None)
- All version numbers are non-negative
§Examples
use bare_types::sys::OsVersion;
// Create from components
let version = OsVersion::new(14, 6, Some(1));
// Parse from string
let version: OsVersion = "14.6.1".parse()?;
assert_eq!(version.major(), 14);
// Two-component version
let version: OsVersion = "22.04".parse()?;
assert_eq!(version.patch(), None);Implementations§
Source§impl OsVersion
impl OsVersion
Sourcepub const fn new(major: u16, minor: u16, patch: Option<u16>) -> Self
pub const fn new(major: u16, minor: u16, patch: Option<u16>) -> Self
Creates a new OS version from components.
§Arguments
major- The major version numberminor- The minor version numberpatch- The optional patch version number
§Examples
use bare_types::sys::OsVersion;
// Three-component version
let version = OsVersion::new(14, 6, Some(1));
assert_eq!(version.major(), 14);
assert_eq!(version.minor(), 6);
assert_eq!(version.patch(), Some(1));
// Two-component version
let version = OsVersion::new(22, 4, None);
assert_eq!(version.patch(), None);Sourcepub const fn major(&self) -> u16
pub const fn major(&self) -> u16
Returns the major version number.
§Examples
use bare_types::sys::OsVersion;
let version = OsVersion::new(14, 6, Some(1));
assert_eq!(version.major(), 14);Sourcepub const fn minor(&self) -> u16
pub const fn minor(&self) -> u16
Returns the minor version number.
§Examples
use bare_types::sys::OsVersion;
let version = OsVersion::new(14, 6, Some(1));
assert_eq!(version.minor(), 6);Sourcepub const fn patch(&self) -> Option<u16>
pub const fn patch(&self) -> Option<u16>
Returns the optional patch version number.
§Examples
use bare_types::sys::OsVersion;
let version = OsVersion::new(14, 6, Some(1));
assert_eq!(version.patch(), Some(1));
let version = OsVersion::new(22, 4, None);
assert_eq!(version.patch(), None);Sourcepub const fn is_major_release(&self) -> bool
pub const fn is_major_release(&self) -> bool
Returns true if this is a major version (x.0.x or x.0).
§Examples
use bare_types::sys::OsVersion;
assert!(OsVersion::new(14, 0, Some(0)).is_major_release());
assert!(OsVersion::new(14, 0, None).is_major_release());
assert!(!OsVersion::new(14, 6, Some(0)).is_major_release());Sourcepub const fn is_initial_release(&self) -> bool
pub const fn is_initial_release(&self) -> bool
Returns true if this is an initial release (x.0.0 or x.0).
§Examples
use bare_types::sys::OsVersion;
assert!(OsVersion::new(14, 0, Some(0)).is_initial_release());
assert!(!OsVersion::new(14, 6, Some(0)).is_initial_release());Sourcepub const fn as_tuple(&self) -> (u16, u16, u16)
pub const fn as_tuple(&self) -> (u16, u16, u16)
Returns a tuple of (major, minor, patch) for comparison.
For versions without a patch, 0 is used as the patch number for comparison.
§Examples
use bare_types::sys::OsVersion;
let version = OsVersion::new(14, 6, Some(1));
assert_eq!(version.as_tuple(), (14, 6, 1));
let version = OsVersion::new(22, 4, None);
assert_eq!(version.as_tuple(), (22, 4, 0));Sourcepub const fn to_short(&self) -> Self
pub const fn to_short(&self) -> Self
Returns a new version with only major and minor components.
§Examples
use bare_types::sys::OsVersion;
let version = OsVersion::new(14, 6, Some(1));
let short = version.to_short();
assert_eq!(short.patch(), None);
assert_eq!(short.major(), 14);
assert_eq!(short.minor(), 6);Sourcepub const fn with_patch(&self, patch: u16) -> Self
pub const fn with_patch(&self, patch: u16) -> Self
Returns a new version with the patch component set.
§Examples
use bare_types::sys::OsVersion;
let version = OsVersion::new(14, 6, None);
let patched = version.with_patch(1);
assert_eq!(patched.patch(), Some(1));Sourcepub const fn new_short(major: u16, minor: u16) -> Self
pub const fn new_short(major: u16, minor: u16) -> Self
Creates a version from major and minor only.
This is a convenience method for two-component versions.
§Examples
use bare_types::sys::OsVersion;
let version = OsVersion::new_short(22, 4);
assert_eq!(version.major(), 22);
assert_eq!(version.minor(), 4);
assert_eq!(version.patch(), None);Trait Implementations§
Source§impl<'arbitrary> Arbitrary<'arbitrary> for OsVersion
impl<'arbitrary> Arbitrary<'arbitrary> for OsVersion
Source§fn arbitrary(u: &mut Unstructured<'arbitrary>) -> Result<Self>
fn arbitrary(u: &mut Unstructured<'arbitrary>) -> Result<Self>
Generate an arbitrary value of
Self from the given unstructured data. Read moreSource§fn arbitrary_take_rest(u: Unstructured<'arbitrary>) -> Result<Self>
fn arbitrary_take_rest(u: Unstructured<'arbitrary>) -> Result<Self>
Generate an arbitrary value of
Self from the entirety of the given
unstructured data. Read moreSource§fn size_hint(depth: usize) -> (usize, Option<usize>)
fn size_hint(depth: usize) -> (usize, Option<usize>)
Get a size hint for how many bytes out of an
Unstructured this type
needs to construct itself. Read moreSource§fn try_size_hint(
depth: usize,
) -> Result<(usize, Option<usize>), MaxRecursionReached>
fn try_size_hint( depth: usize, ) -> Result<(usize, Option<usize>), MaxRecursionReached>
Get a size hint for how many bytes out of an
Unstructured this type
needs to construct itself. Read moreSource§impl<'de> Deserialize<'de> for OsVersion
impl<'de> Deserialize<'de> for OsVersion
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Ord for OsVersion
impl Ord for OsVersion
Source§impl PartialOrd for OsVersion
impl PartialOrd for OsVersion
impl Copy for OsVersion
impl Eq for OsVersion
impl StructuralPartialEq for OsVersion
Auto Trait Implementations§
impl Freeze for OsVersion
impl RefUnwindSafe for OsVersion
impl Send for OsVersion
impl Sync for OsVersion
impl Unpin for OsVersion
impl UnwindSafe for OsVersion
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more