Enum CapeStringHashKey

Source
pub enum CapeStringHashKey<'a> {
    Owned(CapeStringConstNoCase),
    Borrowed(*const CapeCharacter, CapeSize, PhantomData<&'a ()>),
}
Expand description

Class to store a platform dependent string encoding for use in case insensitive hash maps or for use of case insensitive comparisons.

For COBIA, strings go over the pipeline as null terminated. For Windows, COBIA requires UTF-16 encoding.

The CapeStringHashKey implementation uses a CapeStringConstNoCase to store, owned string data, or allows reference to data provided by any class that implements CapeStringConstProvider, so that a copy of the data is not needed for hash lookups.

A convenience class CapeOpenMap is defined, that uses the more performant hasher in the FxHasmap class and wraps members in accordance with the above requirements.

Note that this type cannot serve as a cape string provider, as this would require a mutable interface pointer.

Variants§

Implementations§

Source§

impl<'a> CapeStringHashKey<'a>

Source

pub fn from_string<T: AsRef<str>>(s: T) -> Self

Construct from string that owns the data

§Arguments
  • s - A string slice to be converted to a CapeStringHashKey
Source

pub fn from_cape_char_const(ptr: *const CapeCharacter, size: CapeSize) -> Self

Construct from string that owns the data

§Arguments
  • ptr - A const CapeCharacter pointer
  • size - Length of the string pointed to
Source

pub fn from_string_constant<'b, T: CapeStringConstProvider>( c: &'b T, ) -> CapeStringHashKey<'b>

Construct from string constant provider reference that does not own the data

§Arguments
  • c - A string constant reference
Source

pub fn as_string(&self) -> String

Return as string

§Examples
use cobia;
let s=cobia::CapeStringHashKey::from_string("idealGasEnthalpy");
assert_eq!(s.as_string(),"idealgasenthalpy"); //note that CapeStringConstNoCase stores strings in lower case

Trait Implementations§

Source§

impl<'a> Clone for CapeStringHashKey<'a>

Source§

fn clone(&self) -> Self

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<'a> Debug for CapeStringHashKey<'a>

Source§

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

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

impl<'a> Display for CapeStringHashKey<'a>

Source§

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

Formats the CapeStringConstNoCase error using the given formatter.

§Examples
use cobia;
let s=cobia::CapeStringConstNoCase::from_string("idealGasEnthalpy");
assert_eq!(format!("{}",s),"idealgasenthalpy"); //note that CapeStringConstNoCase stores strings in lower case
Source§

impl<'a, T: AsRef<str>> From<T> for CapeStringHashKey<'a>

Source§

fn from(s: T) -> Self

Converts to this type from the input type.
Source§

impl<'a> Hash for CapeStringHashKey<'a>

Source§

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

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

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<'a> PartialEq for CapeStringHashKey<'a>

Source§

fn eq(&self, other: &Self) -> 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<'a> Eq for CapeStringHashKey<'a>

Source§

impl<'a> Send for CapeStringHashKey<'a>

Source§

impl<'a> Sync for CapeStringHashKey<'a>

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.

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.

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> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. 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.