pub trait CodePage: Encoder {
// Required method
fn decode<'a>(&self, bytes: &'a [u8]) -> Result<Cow<'a, str>, DecodeError>;
// Provided methods
fn encode<'a>(&self, s: &'a str) -> Result<Cow<'a, [u8]>, EncodeError> { ... }
fn encode_lossy<'a>(&self, s: &'a str, fallback: u8) -> Cow<'a, [u8]> { ... }
fn decode_lossy<'a>(&self, bytes: &'a [u8]) -> Cow<'a, str> { ... }
fn decode_lossy_fallback<'a>(
&self,
bytes: &'a [u8],
_fallback: char,
) -> Cow<'a, str> { ... }
}Required Methods§
Sourcefn decode<'a>(&self, bytes: &'a [u8]) -> Result<Cow<'a, str>, DecodeError>
fn decode<'a>(&self, bytes: &'a [u8]) -> Result<Cow<'a, str>, DecodeError>
Decode single-byte encoding into UTF-8 string
Undefined codepoints will result in DecodeError
§Examples
use yore::{CodePage, DecodeError};
// Erase types for example - prefer concrete type over trait object whenever possible
let cp850: &dyn CodePage = &yore::code_pages::CP850;
let cp857: &dyn CodePage = &yore::code_pages::CP857;
assert_eq!(cp850.decode(&[116, 101, 120, 116]).unwrap(), "text");
//codepoint 231 is undefined
assert!(matches!(cp857.decode(&[116, 101, 120, 116, 231]), Err(DecodeError{position: 4, value: 231})));Provided Methods§
Sourcefn encode<'a>(&self, s: &'a str) -> Result<Cow<'a, [u8]>, EncodeError>
fn encode<'a>(&self, s: &'a str) -> Result<Cow<'a, [u8]>, EncodeError>
Encode UTF-8 string into single-byte encoding
Undefined characters will result in EncodeError
§Examples
use yore::{CodePage, EncodeError};
// Erase type for example - prefer concrete type over trait object whenever possible
let cp850: &dyn CodePage = &yore::code_pages::CP850;
assert_eq!(cp850.encode("text").unwrap(), vec![116, 101, 120, 116]);
assert!(matches!(cp850.encode("text 🦀"), EncodeError));Sourcefn encode_lossy<'a>(&self, s: &'a str, fallback: u8) -> Cow<'a, [u8]>
fn encode_lossy<'a>(&self, s: &'a str, fallback: u8) -> Cow<'a, [u8]>
Encode UTF-8 string into single-byte encoding
Undefined characters will be replaced with byte fallback
§Examples
use yore::CodePage;
// Erase type for example - prefer concrete type over trait object whenever possible
let cp850: &dyn CodePage = &yore::code_pages::CP850;
assert_eq!(cp850.encode_lossy("text 🦀", 168), vec![116, 101, 120, 116, 32, 168])Sourcefn decode_lossy<'a>(&self, bytes: &'a [u8]) -> Cow<'a, str>
fn decode_lossy<'a>(&self, bytes: &'a [u8]) -> Cow<'a, str>
Decode single-byte encoding into UTF-8 string
Undefined codepoints will be replaced with '�'
§Examples
use yore::CodePage;
// Erase type for example - prefer concrete type over trait object whenever possible
let cp857: &dyn CodePage = &yore::code_pages::CP857;
//codepoint 231 is undefined
assert_eq!(cp857.decode_lossy(&[116, 101, 120, 116, 32, 231]), "text �");Sourcefn decode_lossy_fallback<'a>(
&self,
bytes: &'a [u8],
_fallback: char,
) -> Cow<'a, str>
fn decode_lossy_fallback<'a>( &self, bytes: &'a [u8], _fallback: char, ) -> Cow<'a, str>
Decode single-byte encoding into UTF-8 string
Undefined codepoints will be replaced with fallback
§Examples
use yore::CodePage;
// Erase type for example - prefer concrete type over trait object whenever possible
let cp857: &dyn CodePage = &yore::code_pages::CP857;
//codepoint 231 is undefined
assert_eq!(cp857.decode_lossy_fallback(&[116, 101, 120, 116, 32, 231], '�'), "text �");