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§
Implementations§
Source§impl Encoding
impl Encoding
Sourcepub const NUM_SUPPORTED_ENCODINGS: usize = 3usize
pub const NUM_SUPPORTED_ENCODINGS: usize = 3usize
Sourcepub const fn to_flag(self) -> u8
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);
Sourcepub const fn try_from_flag(flag: u8) -> Result<Self, InvalidEncodingError>
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())
);
Sourcepub const fn inspect(self) -> &'static str
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)>"
Sourcepub const fn name(self) -> &'static str
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"
Sourcepub const fn names(self) -> &'static [&'static str]
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"]
Sourcepub const fn is_ascii_compatible(self) -> bool
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
Sourcepub const fn is_dummy(self) -> bool
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 From<Encoding> for u8
impl From<Encoding> for u8
Source§fn from(encoding: Encoding) -> Self
fn from(encoding: Encoding) -> Self
Serialize an Encoding
to a bitflag.
See Encoding::to_flag
.
Source§impl Ord for Encoding
impl Ord for Encoding
Source§impl PartialOrd for Encoding
impl PartialOrd for Encoding
Source§impl TryFrom<u8> for Encoding
impl TryFrom<u8> for Encoding
Source§fn try_from(flag: u8) -> Result<Self, InvalidEncodingError>
fn try_from(flag: u8) -> Result<Self, InvalidEncodingError>
Try to deserialize an Encoding
from a bitflag.