Version

Struct Version 

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

Represents a version string from a DBC file.

The VERSION statement in a DBC file specifies the database version. This struct stores the version string as a borrowed reference.

§Examples

use dbc_rs::Dbc;

let dbc_content = r#"VERSION "1.0"

BU_: ECM

BO_ 256 Engine : 8 ECM
 SG_ RPM : 0|16@1+ (0.25,0) [0|8000] "rpm"
"#;

let dbc = Dbc::parse(dbc_content)?;
if let Some(version) = dbc.version() {
    // Access the raw string
    assert_eq!(version.as_str(), "1.0");
    // Display trait is available with std feature
    #[cfg(feature = "std")]
    {
        println!("DBC version: {}", version);
    }
}

§Format

The version string can be any sequence of printable characters enclosed in quotes. Common formats include:

  • "1.0" - Simple semantic version
  • "1.2.3" - Full semantic version
  • "1.0-beta" - Version with suffix
  • "" - Empty version string (allowed)

Implementations§

Source§

impl Version

Source

pub fn as_str(&self) -> &str

Returns the version string as a &str.

§Examples
use dbc_rs::Dbc;

let dbc = Dbc::parse(r#"VERSION "1.2.3"

BU_: ECM
"#)?;

if let Some(version) = dbc.version() {
    assert_eq!(version.as_str(), "1.2.3");
}
Source§

impl Version

Source

pub fn to_dbc_string(&self) -> String

Converts the version to its DBC file representation.

Returns a string in the format: VERSION "version_string"

§Examples
use dbc_rs::Dbc;

let dbc = Dbc::parse(r#"VERSION "1.0"

BU_: ECM
"#)?;

if let Some(version) = dbc.version() {
    let dbc_string = version.to_dbc_string();
    assert_eq!(dbc_string, "VERSION \"1.0\"");
}
§Empty Version

Empty version strings are represented as VERSION "":

use dbc_rs::Dbc;

let dbc = Dbc::parse(r#"VERSION ""

BU_: ECM
"#)?;

if let Some(version) = dbc.version() {
    assert_eq!(version.to_dbc_string(), "VERSION \"\"");
}
§Feature Requirements

This method requires the std feature to be enabled.

Trait Implementations§

Source§

impl Clone for Version

Source§

fn clone(&self) -> Version

Returns a duplicate of the value. Read more
1.0.0§

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 Display for Version

Display implementation for Version.

Formats the version as just the version string (without the VERSION keyword or quotes).

§Examples

use dbc_rs::Dbc;

let dbc = Dbc::parse(r#"VERSION "1.2.3"

BU_: ECM
"#)?;

if let Some(version) = dbc.version() {
    // Display trait formats as just the version string
    assert_eq!(format!("{}", version), "1.2.3");
    // Use to_dbc_string() for full DBC format (requires std feature)
    #[cfg(feature = "std")]
    assert_eq!(version.to_dbc_string(), "VERSION \"1.2.3\"");
}
Source§

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

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

impl Hash for Version

Source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, Self: Sized,

Feeds a slice of this type into the given Hasher. 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§

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 Eq for Version

Source§

impl StructuralPartialEq for Version

Auto Trait Implementations§

Blanket Implementations§

§

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

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

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

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

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

§

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

Mutably borrows from an owned value. Read more
§

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

§

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
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

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

§

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> ToOwned for T
where T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
§

fn to_owned(&self) -> T

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

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

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

impl<T> ToString for T
where T: Display + ?Sized,

§

fn to_string(&self) -> String

Converts the given value to a String. Read more
§

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

§

type Error = Infallible

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

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

Performs the conversion.
§

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

§

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

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

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

Performs the conversion.