based64/
string.rs

1//! API that returns `String`
2
3extern crate alloc;
4use alloc::string::String;
5
6use super::{Codec, vec, assert_valid_character_table};
7
8///Encoding function returns string.
9///
10///Requires feature `alloc`.
11///
12///# Arguments
13///- `src` - Input to encode;
14///
15///# Panics
16///
17///In case of required size to be too big or table contains non-ASCII characters
18#[inline]
19pub fn encode(table: &[u8; 64], src: &[u8]) -> String {
20    //User must supply valid table for string conversion to be valid
21    assert!(assert_valid_character_table(table));
22
23    let result = vec::encode(table, src);
24
25    unsafe {
26        String::from_utf8_unchecked(result)
27    }
28}
29
30impl<'a> Codec<'a> {
31    ///Encoding function returns string.
32    ///
33    ///Requires feature `alloc`.
34    ///
35    ///# Arguments
36    ///- `src` - Input to encode;
37    ///
38    ///# Panics
39    ///
40    ///In case of required size to be too big or table contains non-ASCII characters
41    #[inline]
42    pub fn encode_into_string(&self, src: &[u8]) -> String {
43        let result = vec::encode(self.table, src);
44
45        unsafe {
46            String::from_utf8_unchecked(result)
47        }
48    }
49}