本文汇总 Rust 中使用 base64 crate 的方式,涵盖常用 API、URL 安全变体、错误处理与小型文件 I/O 示例。
使用 base64 依赖。基础函数为 encode/decode;
更灵活的 Engine API 位于 base64::engine 下,常用引擎包括
general_purpose::STANDARD 与 general_purpose::URL_SAFE,支持带/不带填充。
[dependencies]
base64 = "0.22"
use base64::{encode, decode};
fn main() {
let text = "Hello, world";
let b64 = encode(text);
println!("{}", b64); // SGVsbG8sIOS4lueVjw==
let bytes = decode(&b64).expect("valid base64");
let decoded = String::from_utf8(bytes).expect("utf8");
println!("{}", decoded); // Hello, world
}
use base64::{engine::general_purpose, Engine as _};
fn main() {
let raw = b"token:id/123+scope";
let url_b64 = general_purpose::URL_SAFE.encode(raw);
println!("{}", url_b64); // dG9rZW46aWQvMTIzK3Njb3Bl
let bytes = general_purpose::URL_SAFE.decode(url_b64).unwrap();
println!("{:?}", bytes); // b"token:id/123+scope"
}
use base64::decode;
fn main() {
match decode("@@invalid@@") {
Ok(bytes) => println!("{} bytes", bytes.len()),
Err(err) => eprintln!("Decode failed: {}", err),
}
}
use std::{fs, io};
use base64::{engine::general_purpose, Engine as _};
fn main() -> io::Result<()> {
// Binary file → Base64 text
let bytes = fs::read("input.bin")?;
let b64 = general_purpose::STANDARD.encode(&bytes);
fs::write("output.txt", b64)?;
// Base64 text → Binary file
let b64_text = fs::read_to_string("output.txt")?;
let data = general_purpose::STANDARD
.decode(b64_text.trim())
.expect("valid base64");
fs::write("restored.bin", data)?;
Ok(())
}
STANDARD、URL_SAFE 及其 NO_PAD 变体。String::from_utf8)。Result<Vec<u8>, base64::DecodeError>,请妥善处理。