Expand description
§Base64 Stream
To encode/decode large data with the standard Base64 encoding.
§Examples
§Encode
§ToBase64Reader
use std::io::{Cursor, Read};
use base64_stream::ToBase64Reader;
let test_data = b"Hi there, this is a simple sentence used for testing this crate. I hope all cases are correct.".to_vec();
let mut reader = ToBase64Reader::new(Cursor::new(test_data));
let mut base64 = String::new();
reader.read_to_string(&mut base64).unwrap();
assert_eq!("SGkgdGhlcmUsIHRoaXMgaXMgYSBzaW1wbGUgc2VudGVuY2UgdXNlZCBmb3IgdGVzdGluZyB0aGlzIGNyYXRlLiBJIGhvcGUgYWxsIGNhc2VzIGFyZSBjb3JyZWN0Lg==", base64);
§ToBase64Writer
use std::fs::{self, File};
use std::io::Write;
use std::path::Path;
use base64_stream::ToBase64Writer;
const DATA_FOLDER: &str = "data";
const ENCODE_OUTPUT: &str = "encode_output.txt";
let test_data = b"Hi there, this is a simple sentence used for testing this crate. I hope all cases are correct.".as_ref();
let file_path = Path::new("tests").join(DATA_FOLDER).join(ENCODE_OUTPUT);
let base64 = File::create(file_path.as_path()).unwrap();
let mut writer = ToBase64Writer::new(base64);
writer.write_all(test_data).unwrap();
writer.flush().unwrap(); // the flush method is only used when the full plain data has been written
assert_eq!("SGkgdGhlcmUsIHRoaXMgaXMgYSBzaW1wbGUgc2VudGVuY2UgdXNlZCBmb3IgdGVzdGluZyB0aGlzIGNyYXRlLiBJIGhvcGUgYWxsIGNhc2VzIGFyZSBjb3JyZWN0Lg==", fs::read_to_string(file_path).unwrap());
§Decode
§FromBase64Reader
use std::io::Cursor;
use std::io::Read;
use base64_stream::FromBase64Reader;
let base64 = b"SGkgdGhlcmUsIHRoaXMgaXMgYSBzaW1wbGUgc2VudGVuY2UgdXNlZCBmb3IgdGVzdGluZyB0aGlzIGNyYXRlLiBJIGhvcGUgYWxsIGNhc2VzIGFyZSBjb3JyZWN0Lg==".to_vec();
let mut reader = FromBase64Reader::new(Cursor::new(base64));
let mut test_data = String::new();
reader.read_to_string(&mut test_data).unwrap();
assert_eq!("Hi there, this is a simple sentence used for testing this crate. I hope all cases are correct.", test_data);
§FromBase64Writer
use std::fs::{self, File};
use std::io::Write;
use std::path::Path;
use base64_stream::FromBase64Writer;
const DATA_FOLDER: &str = "data";
const DECODE_OUTPUT: &str = "decode_output.txt";
let base64 = b"SGkgdGhlcmUsIHRoaXMgaXMgYSBzaW1wbGUgc2VudGVuY2UgdXNlZCBmb3IgdGVzdGluZyB0aGlzIGNyYXRlLiBJIGhvcGUgYWxsIGNhc2VzIGFyZSBjb3JyZWN0Lg==".as_ref();
let file_path = Path::new("tests").join(DATA_FOLDER).join(DECODE_OUTPUT);
let test_data = File::create(file_path.as_path()).unwrap();
let mut writer = FromBase64Writer::new(test_data);
writer.write_all(base64).unwrap();
writer.flush().unwrap(); // the flush method is only used when the full base64 data has been written
assert_eq!("Hi there, this is a simple sentence used for testing this crate. I hope all cases are correct.", fs::read_to_string(file_path).unwrap());
§Change the Buffer Size
The default buffer size is 4096 bytes. If you want to change that, you can use the new2
associated function and define a length explicitly to create an instance of the above structs.
For example, to change the buffer size to 256 bytes,
use std::io::{Cursor, Read};
use base64_stream::ToBase64Reader;
use base64_stream::generic_array::typenum::U256;
let test_data = b"Hi there, this is a simple sentence used for testing this crate. I hope all cases are correct.".to_vec();
let mut reader: ToBase64Reader<_, U256> = ToBase64Reader::new2(Cursor::new(test_data));
let mut base64 = String::new();
reader.read_to_string(&mut base64).unwrap();
assert_eq!("SGkgdGhlcmUsIHRoaXMgaXMgYSBzaW1wbGUgc2VudGVuY2UgdXNlZCBmb3IgdGVzdGluZyB0aGlzIGNyYXRlLiBJIGhvcGUgYWxsIGNhc2VzIGFyZSBjb3JyZWN0Lg==", base64);
Re-exports§
pub extern crate base64;
pub extern crate generic_array;
Structs§
- From
Base64 Reader - Read base64 data and decode them to plain data.
- From
Base64 Writer - Write base64 data and decode them to plain data.
- ToBase64
Reader - Read any data and encode them to base64 data.
- ToBase64
Writer - Write base64 data and encode them to plain data.