0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
usize 已经可以满足需求。但实际上 usize 的大小对于 Base62 的使用场景来说还是不太够用的。encode 的参数是 bytes:pub fn encode(bytes: &[u8]) -> String
A byte array (leading zeros allowed) is prepended with 0x01and is treated as a big-endian unsigned integer (num_bigint::BigUint).
num_bigint 2都实现了对 byte array 的转化。所以将 byte array 避免了适应不同的类型,提高了通用性。这一点非常值得学习。[char; 62],而非 String。这样可以避免反复执行 String::chars 的 CPU 消耗。failure 库,降低了代码复杂度。是一个不错的方法。一开始没有使用 base-62 的原因是没有理解为什么使用了 byte array 这样的方式作为参数。目前 base-62 对我而言美中不足的就是字母表顺序和我预期不一致。未来会考虑将自己的项目存档,通过 features 给 base-62 提供可选的其他字母表顺序的支持。
usize 为例,提供了 to_be_bytes 方法。u32, u64 等也均有此方法。↩︎num_bigint 也实现了 byte array 转换,但是使用了的名称 to_bytes_be,和标准库中(如 std::usize::to_be_types)不一致,需留意。↩︎原文作者:Rust语言中文社区;如有侵权,请联系管理员删除。