From 5671f6cf77235f6e8bbff90913b4f992e8019185 Mon Sep 17 00:00:00 2001 From: baoyachi Date: Wed, 3 Jan 2024 12:10:02 +0800 Subject: [PATCH] support char type --- README.md | 19 +++++++++++++++---- src/lib.rs | 22 ++++++++++++++++++++++ 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 8beea71..e338789 100644 --- a/README.md +++ b/README.md @@ -16,13 +16,24 @@ use sha256::digest; fn main() { + let input = String::from("hello"); + let val = digest(input); + assert_eq!(val,"2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"); + + //sha256 digest &str let input = "hello"; let val = digest(input); - assert_eq!(val, "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"); - - let input = "hello".to_string(); + assert_eq!(val,"2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"); + + //sha256 digest &mut &str + let mut input = "hello"; + let val = digest(&mut input); + assert_eq!(val,"2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"); + + //sha256 digest char + let mut input = "π"; let val = digest(input); - assert_eq!(val, "2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"); + assert_eq!(val,"2617fcb92baa83a96341de050f07a3186657090881eae6b833f66a035600f35a"); let input = b"hello"; diff --git a/src/lib.rs b/src/lib.rs index ae08e9a..94ec155 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -14,6 +14,16 @@ //! let val = digest(input); //! assert_eq!(val,"2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"); //! +//! //sha256 digest &mut &str +//! let mut input = "hello"; +//! let val = digest(&mut input); +//! assert_eq!(val,"2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824"); +//! +//! //sha256 digest char +//! let mut input = "π"; +//! let val = digest(input); +//! assert_eq!(val,"2617fcb92baa83a96341de050f07a3186657090881eae6b833f66a035600f35a"); +//! //! //sha256 digest bytes //! let input = b"hello"; //! let val = digest(input); @@ -156,6 +166,18 @@ impl Sha256Digest for &str { } } +impl Sha256Digest for char { + fn digest(self) -> String { + __digest__(self.encode_utf8(&mut [0; 4]).as_bytes()) + } +} + +impl Sha256Digest for &mut &str { + fn digest(self) -> String { + __digest__(self.as_bytes()) + } +} + impl Sha256Digest for &String { fn digest(self) -> String { __digest__(self.as_bytes())