uhttp_version 0.6.0

HTTP version field parser/formatter
Documentation
  • Coverage
  • 100%
    6 out of 6 items documented1 out of 4 items with examples
  • Size
  • Source code size: 8.62 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.56 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • kchmck/uhttp_version.rs
    0 1 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • kchmck

This crate provides a parser/formatter for the HTTP version field found in the request/response start line.

Example

use uhttp_version::HttpVersion;
use std::io::Write;

assert_eq!(HttpVersion::from_bytes(b"HTTP/1.0"), Ok(HttpVersion::from_parts(1, 0)));
assert_eq!(HttpVersion::from_bytes(b"HTTP/1.1"), Ok(HttpVersion::from_parts(1, 1)));
assert_eq!(HttpVersion::from_bytes(b"HTTP/4.2"), Ok(HttpVersion::from_parts(4, 2)));

assert_eq!("HTTP/1.0".parse(), Ok(HttpVersion::from_parts(1, 0)));
assert_eq!("HTTP/1.1".parse(), Ok(HttpVersion::from_parts(1, 1)));
assert_eq!("HTTP/4.2".parse(), Ok(HttpVersion::from_parts(4, 2)));

assert!(HttpVersion::from_bytes(b"http/1.1").is_err());
assert!(HttpVersion::from_bytes(b"HTTP/1.42").is_err());
assert!(HttpVersion::from_bytes(b"HTTP/1-1").is_err());

let ver = HttpVersion::from_bytes(b"HTTP/1.1").unwrap();
assert_eq!(ver.major, 1);
assert_eq!(ver.minor, 1);

let ver = HttpVersion::from_parts(4, 2);
let mut buf = [b'#'; 8];
write!(&mut buf[..], "{}", ver).unwrap();
assert_eq!(&buf[..], b"HTTP/4.2");