base62

Crates.iobase62
lib.rsbase62
version2.2.3
created_at2015-10-13 12:48:26.376761+00
updated_at2025-09-21 02:28:10.839018+00
descriptionA Base62 encoding/decoding library
homepagehttps://github.com/fbernier/base62
repositoryhttps://github.com/fbernier/base62
max_upload_size
id3212
size74,972
François Bernier (fbernier)

documentation

https://docs.rs/base62/

README

base62

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.

Build status Crates.io Docs

Features

  • no_std compatible with optional alloc and std support
  • Encodes integers up to u128
  • Zero-copy decoding
  • Efficient string handling
  • Two encoding variants:
    • Standard [0-9A-Za-z]
    • Alternative [0-9a-zA-Z]

Usage

Add this to your Cargo.toml:

[dependencies]
base62 = "2"

Basic Example

use base62;

// Encoding
let encoded = base62::encode(1234567890);
assert_eq!(encoded, "1LY7VK");

// Decoding
let decoded = base62::decode("1LY7VK").unwrap();
assert_eq!(decoded, 1234567890);

No-std Usage

The crate works in no_std environments by default:

#![no_std]
use base62;

// Encode into a fixed buffer
let mut buf = [0u8; 22];  // Maximum size needed for u128
let len = base62::encode_bytes(1234567890, &mut buf).unwrap();
assert_eq!(&buf[..len], b"1LY7VK");

// Decode from bytes
let decoded = base62::decode(&buf[..len]).unwrap();
assert_eq!(decoded, 1234567890);

Feature Flags

  • alloc: Enables String allocation support (enabled by default)
  • std: Enables std::io traits support

Performance

The library is optimized for both encoding and decoding performance:

  • Zero-copy decoding
  • Efficient buffer management
  • Direct string manipulation for optimal performance when appending

License

Licensed under the MIT license. See LICENSE for details.

Commit count: 112

cargo fmt