Skip to main content

minimal_id/
generator.rs

1use super::MinimalId;
2use super::Seed;
3
4/// # Generator
5///
6/// top level structure for interfacing with the library
7///
8/// ```
9/// use minimal_id::Generator;
10/// let id = Generator::new_id();
11/// ```
12#[derive(PartialEq, Debug)]
13pub struct Generator {}
14
15impl Default for Generator {
16	/// Creates the generator
17	///
18	/// This doesn't really do anything other than contain the functions
19	/// This can probably be deleted.
20	fn default() -> Self { Generator {} }
21}
22
23impl Generator {
24	/// Returns a new Minimal Id
25	#[deprecated(since = "0.8.0", note = "Use Generator::new_id or MinimalId::generate")]
26	pub fn generate(&self) -> MinimalId { Generator::new_id() }
27
28	/// Parse a string into a minimal ID
29	///
30	/// ```
31	/// # use minimal_id::*;
32	/// # let generator = Generator::default();
33	/// let id = generator
34	/// 	.id_from_str("AAECAwQFBgcI")
35	/// 	.expect("Cannot parse String into ID");
36	/// assert_eq!(id.to_slice()[0], 0);
37	/// ```
38	// TODO(#3): Improve Error Handling
39	pub fn id_from_str(&self, id_str: &str) -> Result<MinimalId, ()> { MinimalId::id_from_str(id_str) }
40
41	pub fn new_id() -> MinimalId {
42		let seed = Seed::from_time();
43		MinimalId::new(&seed)
44	}
45}
46
47#[cfg(test)]
48mod tests {
49	use super::*;
50
51	#[test]
52	fn functional_test_generate_unique_ids() {
53		let id1 = Generator::new_id();
54		let id2 = Generator::new_id();
55		assert_ne!(id1, id2);
56	}
57}