Struct Version

Source
pub struct Version { /* private fields */ }
Expand description

Provides journal version support within the AIM file. The version header represents a version with an epoch and optional partial component.

A version consists of two parts:

  • epoch: The major version number that increments when creating new versions
  • partial: The minor version number that increments for partial updates within the same epoch

This versioning system is used throughout AIM to track changes and enable efficient version control. The epoch represents major structural changes while partial versions represent incremental updates within the same epoch.

§Examples

use aimx::aim::Version;

// Create a new version
let version = Version::new(1, 0);
assert_eq!(version.epoch(), 1);
assert_eq!(version.partial(), 0);

// Create a version with partial
let version_with_partial = Version::new(2, 3);
assert_eq!(version_with_partial.epoch(), 2);
assert_eq!(version_with_partial.partial(), 3);

Implementations§

Source§

impl Version

Source

pub fn new(epoc: u32, partial: u32) -> Self

Creates a new Version with the specified epoch and partial values.

§Parameters
  • epoc - The major version number
  • partial - The minor version number (typically 0 for new epochs)
§Returns

A new Version instance with the specified values.

§Examples
use aimx::aim::Version;

let version = Version::new(1, 0);
assert_eq!(version.epoc(), 1);
assert_eq!(version.partial(), 0);
Source

pub fn epoc(&self) -> u32

Returns the epoch (major version) of this version.

§Returns

The epoch value as a u32.

§Examples
use aimx::aim::Version;

let version = Version::new(2, 5);
assert_eq!(version.epoc(), 2);
Source

pub fn epoch(&self) -> u32

Returns the epoch (major version) of this version.

This is an alias for Self::epoc() for better readability.

§Returns

The epoch value as a u32.

§Examples
use aimx::aim::Version;

let version = Version::new(2, 5);
assert_eq!(version.epoch(), 2);
Source

pub fn set_epoc(&mut self, epoc: u32)

Sets the epoch and resets the partial to 0.

This method is typically used when moving to a new major version. Setting the epoch automatically resets the partial to 0 since partial versions are specific to their epoch.

§Parameters
  • epoc - The new epoch value
§Examples
use aimx::aim::Version;

let mut version = Version::new(1, 5);
version.set_epoc(2);
assert_eq!(version.epoc(), 2);
assert_eq!(version.partial(), 0); // Reset to 0
Source

pub fn increment_epoc(&mut self)

Increments the epoch and resets the partial to 0.

This method is used to advance to the next major version. The partial is automatically reset to 0 since partial versions are specific to their epoch.

§Examples
use aimx::aim::Version;

let mut version = Version::new(1, 5);
version.increment_epoc();
assert_eq!(version.epoc(), 2);
assert_eq!(version.partial(), 0); // Reset to 0
Source

pub fn partial(&self) -> u32

Returns the partial (minor version) of this version.

§Returns

The partial value as a u32.

§Examples
use aimx::aim::Version;

let version = Version::new(2, 5);
assert_eq!(version.partial(), 5);
Source

pub fn set_partial(&mut self, partial: u32)

Sets the partial value.

This method allows setting the partial version directly without affecting the epoch. Use this when you need to set a specific partial version within the same epoch.

§Parameters
  • partial - The new partial value
§Examples
use aimx::aim::Version;

let mut version = Version::new(1, 0);
version.set_partial(3);
assert_eq!(version.epoc(), 1); // Unchanged
assert_eq!(version.partial(), 3);
Source

pub fn increment_partial(&mut self)

Increments the partial value by 1.

This method is used to advance to the next partial version within the same epoch. This is commonly used for incremental updates that don’t warrant a new epoch.

§Examples
use aimx::aim::Version;

let mut version = Version::new(1, 2);
version.increment_partial();
assert_eq!(version.epoc(), 1); // Unchanged
assert_eq!(version.partial(), 3);

Trait Implementations§

Source§

impl Clone for Version

Source§

fn clone(&self) -> Version

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Version

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Version

Source§

fn eq(&self, other: &Version) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl StructuralPartialEq for Version

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> PolicyExt for T
where T: ?Sized,

§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] only if self and other return Action::Follow. Read more
§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns [Action::Follow] if either self or other returns Action::Follow. Read more
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

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

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

impl<T> ErasedDestructor for T
where T: 'static,