Enum spinoso_string::Encoding

source ·
pub enum Encoding {
    Utf8,
    Ascii,
    Binary,
}
Expand description

An Encoding instance represents a character encoding usable in Ruby.

spinoso-string supports three String encodings:

A String’s encoding makes no assertions about the byte content of the String’s internal buffer. The Encoding associated with a String modifies how character-oriented APIs behave, for example String::char_len. A String with an UTF-8 encoding is only conventionally UTF-8 and may contain invalid UTF-8 byte sequences.

Ruby provides the String#encode API which can transcode the bytes of a String to another encoding. Calling String#encode on any of the encodings defined in this enum is a no-op.

Variants§

§

Utf8

Conventionally UTF-8.

§

Ascii

Conventionally ASCII.

§

Binary

ASCII-8BIT, binary, arbitrary bytes.

Implementations§

source§

impl Encoding

source

pub const NUM_SUPPORTED_ENCODINGS: usize = 3usize

The total number of supported encodings.

spinoso-string supports three encodings:

source

pub const fn to_flag(self) -> u8

Serialize the encoding to a bitflag.

See try_from_flag for how to deserialize an encoding.

This function is used to implement From<Encoding> for u8.

§Examples
assert_eq!(Encoding::Utf8.to_flag(), 2);
assert_eq!(Encoding::Ascii.to_flag(), 4);
assert_eq!(Encoding::Binary.to_flag(), 8);
source

pub const fn try_from_flag(flag: u8) -> Result<Self, InvalidEncodingError>

Deserialize an encoding from a bitflag.

See to_flag for how to serialize an encoding.

This function is used to implement TryFrom<u8> for Encoding.

§Errors

If the given flag does not map to any Encoding, an error is returned.

§Examples
assert_eq!(Encoding::try_from_flag(2), Ok(Encoding::Utf8));
assert_eq!(Encoding::try_from_flag(4), Ok(Encoding::Ascii));
assert_eq!(Encoding::try_from_flag(8), Ok(Encoding::Binary));
assert_eq!(
    Encoding::try_from_flag(2 | 4),
    Err(InvalidEncodingError::new())
);
assert_eq!(
    Encoding::try_from_flag(255),
    Err(InvalidEncodingError::new())
);
source

pub const fn inspect(self) -> &'static str

Returns a string which represents the encoding for programmers.

§Examples
assert_eq!(Encoding::Utf8.inspect(), "#<Encoding:UTF-8>");
assert_eq!(Encoding::Ascii.inspect(), "#<Encoding:US-ASCII>");
assert_eq!(Encoding::Binary.inspect(), "#<Encoding:ASCII-8BIT>");
§Ruby Examples
Encoding::UTF_8.inspect       #=> "#<Encoding:UTF-8>"
Encoding::ISO_2022_JP.inspect #=> "#<Encoding:ISO-2022-JP (dummy)>"
source

pub const fn name(self) -> &'static str

Returns the name of the encoding.

This function is used to implement fmt::Display for Encoding.

This function can be used to implement the Ruby functions Encoding#name and Encoding#to_s.

§Examples
assert_eq!(Encoding::Utf8.name(), "UTF-8");
assert_eq!(Encoding::Ascii.name(), "US-ASCII");
assert_eq!(Encoding::Binary.name(), "ASCII-8BIT");
§Ruby Examples
Encoding::UTF_8.name      #=> "UTF-8"
source

pub const fn names(self) -> &'static [&'static str]

Returns the list of name and aliases of the encoding.

This function can be used to implement the Ruby function Encoding#names.

§Examples
assert_eq!(Encoding::Utf8.names(), ["UTF-8", "CP65001"]);
assert_eq!(
    Encoding::Ascii.names(),
    ["US-ASCII", "ASCII", "ANSI_X3.4-1968", "646"]
);
assert_eq!(Encoding::Binary.names(), ["ASCII-8BIT", "BINARY"]);
§Ruby Examples
Encoding::WINDOWS_31J.names  #=> ["Windows-31J", "CP932", "csWindows31J"]
source

pub const fn is_ascii_compatible(self) -> bool

Returns whether ASCII-compatible or not.

This function can be used to implement the Ruby function Encoding#ascii_compatible?.

§Examples
assert!(Encoding::Utf8.is_ascii_compatible());
assert!(Encoding::Ascii.is_ascii_compatible());
assert!(Encoding::Binary.is_ascii_compatible());
§Ruby Examples
Encoding::UTF_8.ascii_compatible?     #=> true
Encoding::UTF_16BE.ascii_compatible?  #=> false
source

pub const fn is_dummy(self) -> bool

Returns true for dummy encodings.

A dummy encoding is an encoding for which character handling is not properly implemented. It is used for stateful encodings.

This function can be used to implement the Ruby function Encoding#dummy?.

§Examples
assert!(!Encoding::Utf8.is_dummy());
assert!(!Encoding::Ascii.is_dummy());
assert!(!Encoding::Binary.is_dummy());
§Ruby Examples
Encoding::ISO_2022_JP.dummy?       #=> true
Encoding::UTF_8.dummy?             #=> false

Trait Implementations§

source§

impl Clone for Encoding

source§

fn clone(&self) -> Encoding

Returns a copy 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 Encoding

source§

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

Outputs the value of Encoding#inspect.

Returns a string which represents the encoding for programmers. See Encoding::inspect.

source§

impl Default for Encoding

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl Display for Encoding

source§

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

Outputs the value of Encoding#to_s.

Returns the name of the encoding. See Encoding::name.

source§

impl From<Encoding> for u8

source§

fn from(encoding: Encoding) -> Self

Serialize an Encoding to a bitflag.

See Encoding::to_flag.

source§

impl Hash for Encoding

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 Ord for Encoding

source§

fn cmp(&self, other: &Encoding) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for Encoding

source§

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

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

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

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for Encoding

source§

fn partial_cmp(&self, other: &Encoding) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

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

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

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

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

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

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

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

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl TryFrom<u8> for Encoding

source§

fn try_from(flag: u8) -> Result<Self, InvalidEncodingError>

Try to deserialize an Encoding from a bitflag.

See Encoding::try_from_flag.

§

type Error = InvalidEncodingError

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

impl Copy for Encoding

source§

impl Eq for Encoding

source§

impl StructuralPartialEq for Encoding

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> 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,

§

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§

default 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>,

§

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>,

§

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.