A fast, zero-dependency base62 encoder/decoder library for Rust, typically used in URL shorteners. It supports both standard [0-9A-Za-z] and alternative [0-9a-zA-Z] variants.
no_stdcompatible with optionalallocandstdsupport- Encodes integers up to
u128 - Zero-copy decoding
- Efficient string handling
- Two encoding variants:
- Standard [0-9A-Za-z]
- Alternative [0-9a-zA-Z]
Add this to your Cargo.toml:
[dependencies]
base62 = "2"use base62;// Encodinglet encoded = base62::encode(1234567890);assert_eq!(encoded,"1LY7VK");// Decodinglet decoded = base62::decode("1LY7VK").unwrap();assert_eq!(decoded,1234567890);The crate works in no_std environments by default:
#![no_std]use base62;// Encode into a fixed bufferletmut buf = [0u8;22];// Maximum size needed for u128let len = base62::encode_bytes(1234567890,&mut buf).unwrap();assert_eq!(&buf[..len],b"1LY7VK");// Decode from byteslet decoded = base62::decode(&buf[..len]).unwrap();assert_eq!(decoded,1234567890);alloc: Enables String allocation support (enabled by default)std: Enables std::io traits support
The library is optimized for both encoding and decoding performance:
- Zero-copy decoding
- Efficient buffer management
- Direct string manipulation for optimal performance when appending
Licensed under the MIT license. See LICENSE for details.