Skip to content

Commit ad95798

Browse files
authored
Merge pull request #24 from archer884/docs/add-min-length-documentation-for-alphabet
Add min length documentation for alphabet
2 parents c1b6a46 + 6c21789 commit ad95798

File tree

6 files changed

+19
-50
lines changed

6 files changed

+19
-50
lines changed

Diff for: Cargo.toml

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "harsh"
3-
version = "0.2.1"
3+
version = "0.2.2"
44
edition = "2018"
55
description = "Hashids implementation for Rust"
66
readme = "README.md"
@@ -14,8 +14,7 @@ categories = ["encoding", "value-formatting", "web-programming"]
1414
[dependencies]
1515

1616
[dev-dependencies]
17-
criterion = "0.3.3"
18-
quickcheck = "0.9.2"
17+
criterion = "0.3.5"
1918

2019
[[bench]]
2120
name = "benchmarks"

Diff for: examples/decode.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
use harsh::Harsh;
21
use std::{env, error::Error};
32

3+
use harsh::Harsh;
4+
45
fn main() -> Result<(), Box<dyn Error>> {
56
let harsh = Harsh::default();
67
let input = env::args().nth(1).expect("Wut?");

Diff for: src/builder.rs

+7-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
use crate::{harsh::Harsh, shuffle};
21
use std::{error, fmt, result};
32

3+
use crate::{harsh::Harsh, shuffle};
4+
45
const DEFAULT_ALPHABET: &[u8] = b"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
56
const DEFAULT_SEPARATORS: &[u8] = b"cfhistuCFHISTU";
67

@@ -22,11 +23,11 @@ pub enum BuildError {
2223
impl fmt::Display for BuildError {
2324
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
2425
static ALPHABET_LENGTH_MESSAGE: &str =
25-
"The provided alphabet does not contain enough unique characters";
26+
"alphabet must include at least 16 characters";
2627
static ILLEGAL_CHARACTER_MESSAGE: &str =
27-
"The provided alphabet contains an illegal character";
28+
"alphabet contains an illegal character";
2829
static SEPARATOR_MESSAGE: &str =
29-
"The provided separators contain a character not found in the alphabet";
30+
"separators contain a character not found in the alphabet";
3031

3132
match self {
3233
BuildError::AlphabetLength => write!(f, "{}", ALPHABET_LENGTH_MESSAGE),
@@ -72,7 +73,8 @@ impl HarshBuilder {
7273
/// Provides an alphabet.
7374
///
7475
/// Note that this alphabet will be converted into a `[u8]` before use, meaning
75-
/// that multi-byte utf8 character values should be avoided.
76+
/// that multi-byte utf8 character values should be avoided. The alphabet must
77+
/// include at least sixteen characters.
7678
pub fn alphabet<T: Into<Vec<u8>>>(mut self, alphabet: T) -> HarshBuilder {
7779
self.alphabet = Some(alphabet.into());
7880
self

Diff for: src/harsh.rs

+4-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
1-
use crate::{builder::HarshBuilder, shuffle};
21
use std::{error, fmt, result, str};
32

3+
use crate::{builder::HarshBuilder, shuffle};
4+
45
type Result<T, E = Error> = result::Result<T, E>;
56

67
#[derive(Clone, Debug)]
@@ -134,7 +135,7 @@ impl Harsh {
134135

135136
if buffer.len() < self.hash_length {
136137
let guard_index = (nhash as usize
137-
+ buffer.bytes().nth(2).expect("hellfire and damnation") as usize)
138+
+ buffer.as_bytes()[2] as usize)
138139
% self.guards.len();
139140
let guard = self.guards[guard_index];
140141
buffer.push(guard as char);
@@ -186,7 +187,7 @@ impl Harsh {
186187

187188
let lottery = value[0];
188189
let value = &value[1..];
189-
let segments: Vec<_> = value.split(|u| self.separators.contains(u)).collect();
190+
let segments = value.split(|u| self.separators.contains(u));
190191

191192
let result: Option<Vec<_>> = segments
192193
.into_iter()

Diff for: src/lib.rs

+4-2
Original file line numberDiff line numberDiff line change
@@ -63,8 +63,10 @@
6363
mod builder;
6464
mod harsh;
6565

66-
pub use crate::builder::{BuildError, HarshBuilder};
67-
pub use crate::harsh::{Error, Harsh};
66+
pub use crate::{
67+
builder::{BuildError, HarshBuilder},
68+
harsh::{Error, Harsh},
69+
};
6870

6971
fn shuffle(values: &mut [u8], salt: &[u8]) {
7072
if salt.is_empty() {

Diff for: tests/quickcheck.rs

-36
This file was deleted.

0 commit comments

Comments
 (0)