summaryrefslogtreecommitdiffstats
path: root/vendor/faster-hex/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/faster-hex/README.md')
-rw-r--r--vendor/faster-hex/README.md114
1 files changed, 114 insertions, 0 deletions
diff --git a/vendor/faster-hex/README.md b/vendor/faster-hex/README.md
new file mode 100644
index 000000000..4234be587
--- /dev/null
+++ b/vendor/faster-hex/README.md
@@ -0,0 +1,114 @@
+# faster-hex
+
+[![License]](#license)
+[![crate-badge]](https://crates.io/crates/faster-hex)
+
+[crate-badge]: https://img.shields.io/crates/v/faster-hex.svg
+[license]: https://img.shields.io/badge/License-MIT-green.svg
+
+This program implements hex encoding a slice into a predetermined
+destination using various different instruction sets.
+
+## Benchmark
+
+### Running
+Runs benchmark
+```
+cargo bench
+```
+
+### Results
+Machine: MacBook Pro (Early 2015) (2.7 GHz Intel Core i5)
+
+Rust: rustc 1.31.0 (abe02cefd 2018-12-04)
+
+Compare with [hex](https://crates.io/crates/hex):
+
+* Encoding ~10x over
+* Decoding ~10x over
+
+Compare with [rustc-hex](https://crates.io/crates/rustc-hex):
+
+* Encoding ~2.5x over
+* Decoding ~7x over
+
+## Examples
+Encode to hex
+
+```rust
+use faster_hex::hex_string;
+
+let result = hex_string(b"Hello world!");
+assert_eq!(result, "48656c6c6f20776f726c6421");
+```
+Encode to upper case hex
+```rust
+use faster_hex::hex_string_upper;
+
+let result = hex_string_upper(b"Hello world!");
+assert_eq!(result, "48656C6C6F20776F726C6421");
+```
+
+Decode
+```rust
+use faster_hex::hex_decode;
+
+let src = b"48656c6c6f20776f726c6421";
+let mut dst = vec![0; src.len() / 2];
+hex_decode(src, &mut dst).unwrap();
+assert_eq!(dst, b"Hello world!");
+```
+Decode with case check
+```rust
+use faster_hex::{hex_decode_with_case, CheckCase};
+
+let src = b"48656c6c6f20776f726c6421";
+let mut dst = vec![0; src.len() / 2];
+
+assert!(hex_decode_with_case(src, &mut dst, CheckCase::Lower).is_ok());
+assert_eq!(dst, b"Hello world!");
+
+assert!(hex_decode_with_case(src, &mut dst, CheckCase::None).is_ok());
+assert_eq!(dst, b"Hello world!");
+
+assert!(hex_decode_with_case(src, &mut dst, CheckCase::Upper).is_err());
+```
+
+Serde feature
+```rust
+
+use serde::{Deserialize, Serialize};
+
+#[derive(Debug, PartialEq, Eq, Serialize, Deserialize)]
+struct Simple {
+ #[serde(with = "faster_hex")]
+ foo: Vec<u8>,
+ #[serde(with = "faster_hex::nopfx_lowercase")]
+ bar: Vec<u8>,
+}
+```
+
+
+## Notice
+
+Major version zero (0.y.z) is for initial development. Anything MAY change at any time. The public API SHOULD NOT be considered stable.
+
+MINOR version when make incompatible API changes before 1.0.0.
+
+
+## License
+
+This project is licensed under the [MIT license](LICENSE).
+
+### Third party software
+
+This product includes copies and modifications of software developed by third parties:
+
+* [src/encode.rs](src/encode.rs) is based on
+ [stdsimd](https://github.com/rust-lang-nursery/stdsimd), licensed
+ under the MIT license or the Apache License (Version 2.0).
+* [src/decode.rs](src/decode.rs) avx2 decode is modified from [fast-hex](https://github.com/zbjornson/fast-hex)
+
+See the source code files for more details.
+
+Copies of third party licenses can be found in [LICENSE-THIRD-PARTY](LICENSE-THIRD-PARTY).