[go: up one dir, main page]

CodePage

Trait CodePage 

Source
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§

Source

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§

Source

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

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])
Source

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 �");
Source

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

Implementors§