Enum spinoso_string::Encoding[][src]

pub enum Encoding {
    Utf8,
    Ascii,
    Binary,
}

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

impl Encoding[src]

pub const NUM_SUPPORTED_ENCODINGS: usize[src]

The total number of supported encodings.

spinoso-string supports three encodings:

#[must_use]pub const fn to_flag(self) -> u8[src]

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);

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

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()));

#[must_use]pub const fn inspect(self) -> &'static str[src]

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)>"

#[must_use]pub const fn name(self) -> &'static str[src]

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"

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

Notable traits for &'_ [u8]

impl<'_> Read for &'_ [u8]impl<'_> Write for &'_ mut [u8]
[src]

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"]

#[must_use]pub const fn is_ascii_compatible(self) -> bool[src]

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

#[must_use]pub const fn is_dummy(self) -> bool[src]

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

impl Clone for Encoding[src]

impl Copy for Encoding[src]

impl Debug for Encoding[src]

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

Outputs the value of Encoding#inspect.

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

impl Default for Encoding[src]

impl Display for Encoding[src]

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

Outputs the value of Encoding#to_s.

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

impl Eq for Encoding[src]

impl Hash for Encoding[src]

impl Ord for Encoding[src]

impl PartialEq<Encoding> for Encoding[src]

impl PartialOrd<Encoding> for Encoding[src]

impl StructuralEq for Encoding[src]

impl StructuralPartialEq for Encoding[src]

impl TryFrom<u8> for Encoding[src]

type Error = InvalidEncodingError

The type returned in the event of a conversion error.

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

Try to deserialize an Encoding from a bitflag.

See Encoding::try_from_flag.

Auto Trait Implementations

impl RefUnwindSafe for Encoding

impl Send for Encoding

impl Sync for Encoding

impl Unpin for Encoding

impl UnwindSafe for Encoding

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> ToOwned for T where
    T: Clone
[src]

type Owned = T

The resulting type after obtaining ownership.

impl<T> ToString for T where
    T: Display + ?Sized
[src]

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.