Delete all the old hex stuff
This commit is contained in:
parent
e0adca798a
commit
d0e6c54498
1 changed files with 0 additions and 124 deletions
124
src/hex.rs
124
src/hex.rs
|
@ -2,130 +2,6 @@ use std::char;
|
||||||
use std::iter;
|
use std::iter;
|
||||||
use std::str::Chars;
|
use std::str::Chars;
|
||||||
|
|
||||||
pub enum HexResult {
|
|
||||||
Byte(u8),
|
|
||||||
Invalid(char),
|
|
||||||
}
|
|
||||||
|
|
||||||
pub struct HexBytes<'a> {
|
|
||||||
input: Chars<'a>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> HexBytes<'a> {
|
|
||||||
fn new(input: &'a str) -> HexBytes {
|
|
||||||
HexBytes { input: input.chars() }
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn valid(self) -> ValidHexBytes<'a> {
|
|
||||||
ValidHexBytes::new(self)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> iter::Iterator for HexBytes<'a> {
|
|
||||||
type Item = HexResult;
|
|
||||||
|
|
||||||
fn next(&mut self) -> Option<Self::Item> {
|
|
||||||
if let Some(c) = self.input.next() {
|
|
||||||
if let Some(hex) = c.to_digit(16) {
|
|
||||||
Some(HexResult::Byte(hex as u8))
|
|
||||||
} else {
|
|
||||||
Some(HexResult::Invalid(c))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* ValidHexBytes --
|
|
||||||
*/
|
|
||||||
|
|
||||||
pub struct ValidHexBytes<'a> {
|
|
||||||
input: HexBytes<'a>,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> ValidHexBytes<'a> {
|
|
||||||
fn new(input: HexBytes) -> ValidHexBytes {
|
|
||||||
ValidHexBytes { input: input }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> iter::Iterator for ValidHexBytes<'a> {
|
|
||||||
type Item = u8;
|
|
||||||
|
|
||||||
fn next(&mut self) -> Option<Self::Item> {
|
|
||||||
loop {
|
|
||||||
match self.input.next() {
|
|
||||||
Some(hex_c) => match hex_c {
|
|
||||||
HexResult::Byte(c) => return Some(c),
|
|
||||||
_ => continue,
|
|
||||||
},
|
|
||||||
None => return None,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* HexDigest --
|
|
||||||
*/
|
|
||||||
|
|
||||||
pub trait HexDigest {
|
|
||||||
fn hex_digest(self) -> String;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> HexDigest for HexBytes<'a> {
|
|
||||||
fn hex_digest(self) -> String {
|
|
||||||
self.valid().hex_digest()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> HexDigest for ValidHexBytes<'a> {
|
|
||||||
fn hex_digest(self) -> String {
|
|
||||||
self.map(|x| char::from_digit(x as u32, 16).unwrap()).collect()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl HexDigest for Vec<u8> {
|
|
||||||
fn hex_digest(self) -> String {
|
|
||||||
self.into_iter().map(|x| char::from_digit(x as u32, 16).unwrap()).collect()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> HexDigest for &'a [u8] {
|
|
||||||
fn hex_digest(self) -> String {
|
|
||||||
self.into_iter().map(|x| char::from_digit(*x as u32, 16).unwrap()).collect()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
* AsHexbytes --
|
|
||||||
*/
|
|
||||||
|
|
||||||
pub trait AsHexBytes<'a> {
|
|
||||||
fn hex_bytes(&self) -> HexBytes<'a>;
|
|
||||||
}
|
|
||||||
|
|
||||||
impl<'a> AsHexBytes<'a> for &'a str {
|
|
||||||
fn hex_bytes(&self) -> HexBytes<'a> { HexBytes::new(self) }
|
|
||||||
}
|
|
||||||
|
|
||||||
//pub trait HexDecodable {
|
|
||||||
// fn hex_decoded(self) -> Option<Vec<u8>>;
|
|
||||||
//}
|
|
||||||
//
|
|
||||||
//impl<'a> HexDecodable for &'a str {
|
|
||||||
// fn hex_decoded(self) -> Option<Vec<u8>> {
|
|
||||||
// fn valid(ch: &&str) -> bool { ch.chars().all(|c| c.is_digit(16)) }
|
|
||||||
// fn decode(ch: &str) -> u8 { ch.chars().fold(0u8, |acc, c| (acc << 4) + c.to_digit(16).unwrap() as u8) }
|
|
||||||
// self.splitn(2, "")
|
|
||||||
// .take_while(valid)
|
|
||||||
// .map(decode)
|
|
||||||
// .collect::<Vec<u8>>()
|
|
||||||
// }
|
|
||||||
//}
|
|
||||||
|
|
||||||
pub trait HexDecodable<T> {
|
pub trait HexDecodable<T> {
|
||||||
fn hex_decoded(self) -> HexDecoder<T>;
|
fn hex_decoded(self) -> HexDecoder<T>;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue