Merge branch 'master' of https://github.com/gavofyork/ethcore-util
This commit is contained in:
		
						commit
						c6aa0c5dc0
					
				
							
								
								
									
										66
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										66
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							@ -1,66 +0,0 @@
 | 
			
		||||
[root]
 | 
			
		||||
name = "ethcore-util"
 | 
			
		||||
version = "0.1.0"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "env_logger 0.3.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "log 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "aho-corasick"
 | 
			
		||||
version = "0.3.4"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "memchr 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "env_logger"
 | 
			
		||||
version = "0.3.2"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "log 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "regex 0.1.41 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "libc"
 | 
			
		||||
version = "0.1.12"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "libc"
 | 
			
		||||
version = "0.2.2"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "log"
 | 
			
		||||
version = "0.3.3"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "libc 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "memchr"
 | 
			
		||||
version = "0.1.7"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "libc 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "regex"
 | 
			
		||||
version = "0.1.41"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
dependencies = [
 | 
			
		||||
 "aho-corasick 0.3.4 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "memchr 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
 "regex-syntax 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)",
 | 
			
		||||
]
 | 
			
		||||
 | 
			
		||||
[[package]]
 | 
			
		||||
name = "regex-syntax"
 | 
			
		||||
version = "0.2.2"
 | 
			
		||||
source = "registry+https://github.com/rust-lang/crates.io-index"
 | 
			
		||||
 | 
			
		||||
@ -9,3 +9,5 @@ authors = ["Ethcore <admin@ethcore.io>"]
 | 
			
		||||
[dependencies]
 | 
			
		||||
log = "0.3"
 | 
			
		||||
env_logger = "0.3"
 | 
			
		||||
rustc-serialize = "0.3"
 | 
			
		||||
arrayvec = "0.3"
 | 
			
		||||
							
								
								
									
										13
									
								
								src/error.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										13
									
								
								src/error.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,13 @@
 | 
			
		||||
use rustc_serialize::hex::*;
 | 
			
		||||
 | 
			
		||||
#[derive(Debug)]
 | 
			
		||||
pub enum EthcoreError {
 | 
			
		||||
	FromHex(FromHexError),
 | 
			
		||||
	BadSize
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl From<FromHexError> for EthcoreError {
 | 
			
		||||
	fn from(err: FromHexError) -> EthcoreError {
 | 
			
		||||
		EthcoreError::FromHex(err)
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										36
									
								
								src/hash.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								src/hash.rs
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
use rustc_serialize::hex::*;
 | 
			
		||||
use error::EthcoreError;
 | 
			
		||||
use std::str::FromStr;
 | 
			
		||||
 | 
			
		||||
macro_rules! impl_hash {
 | 
			
		||||
	($from: ident, $size: expr) => {
 | 
			
		||||
		#[derive(PartialEq, Debug)]
 | 
			
		||||
		struct $from ([u8; $size]);
 | 
			
		||||
 | 
			
		||||
		impl FromStr for $from {
 | 
			
		||||
//			type Output = $from;
 | 
			
		||||
			type Err = EthcoreError;
 | 
			
		||||
 | 
			
		||||
			fn from_str(s: &str) -> Result<$from, EthcoreError> {
 | 
			
		||||
				let a = try!(s.from_hex());
 | 
			
		||||
				if a.len() != $size { return Err(EthcoreError::BadSize); }
 | 
			
		||||
				let mut ret = $from([0;$size]);
 | 
			
		||||
				for i in 0..$size {
 | 
			
		||||
					ret.0[i] = a[i];
 | 
			
		||||
				}
 | 
			
		||||
				Ok(ret)
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl_hash!(Hash64, 8);
 | 
			
		||||
impl_hash!(Hash128, 16);
 | 
			
		||||
impl_hash!(Address, 20);
 | 
			
		||||
impl_hash!(Hash256, 32);
 | 
			
		||||
//impl_hash!(Hash512, 64);
 | 
			
		||||
 | 
			
		||||
#[test]
 | 
			
		||||
fn it_works() {
 | 
			
		||||
	assert_eq!(Hash64::from_str("0123456789abcdef").unwrap(), Hash64([0x01, 0x23, 0x45, 0x67, 0x89, 0xab, 0xcd, 0xef]));
 | 
			
		||||
}
 | 
			
		||||
@ -1,3 +1,7 @@
 | 
			
		||||
extern crate rustc_serialize;
 | 
			
		||||
 | 
			
		||||
pub mod error;
 | 
			
		||||
pub mod hash;
 | 
			
		||||
pub mod bytes;
 | 
			
		||||
pub mod rlp;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user