Skip to content

Latest commit

History

116 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

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 statusCrates.ioDocs

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;// Encodinglet encoded = base62::encode(1234567890);assert_eq!(encoded,"1LY7VK");// Decodinglet 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 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);

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.

About

Base62 encoding/decoding library in Rust

Resources

Stars

35 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages