16 releases (breaking)

0.13.0 Oct 31, 2021
0.11.0 Mar 18, 2020
0.10.0 Apr 14, 2019
0.8.0 Feb 8, 2018
0.4.0 Jul 19, 2016

#65 in HTTP client

Download history 21181/week @ 2023-11-02 26765/week @ 2023-11-09 29786/week @ 2023-11-16 16785/week @ 2023-11-23 20077/week @ 2023-11-30 19646/week @ 2023-12-07 16856/week @ 2023-12-14 8439/week @ 2023-12-21 11237/week @ 2023-12-28 19874/week @ 2024-01-04 20046/week @ 2024-01-11 24684/week @ 2024-01-18 23663/week @ 2024-01-25 20446/week @ 2024-02-01 28196/week @ 2024-02-08 17833/week @ 2024-02-15

95,250 downloads per month
Used in 7 crates (4 directly)

Apache-2.0

1MB
2.5K SLoC

woothee-rust Rust Latest Version

The Rust implementation of Project Woothee, which is multi-language user-agent strings parsers.

Usage

parsing user-agent.

extern crate woothee;

use woothee::parser::Parser;

fn main() {
    let parser = Parser::new();
    let result = parser.parse("Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0)");
    println!("{:?}", result);
}

run

Some(WootheeResult { name: "Internet Explorer", category: "pc", os: "Windows 7", os_version: "NT 6.1", browser_type: "UNKNOWN", version: "8.0", vendor: "Microsoft" })

Benchmark

$ cargo +nightly bench
running 8 tests
test bench_stabilizer       ... bench:          22 ns/iter (+/- 1)
test create_parser_uap      ... bench: 190,983,237 ns/iter (+/- 18,726,783)
test create_parser_uaparser ... bench: 331,963,075 ns/iter (+/- 20,320,543)
test create_parser_woothee  ... bench:           0 ns/iter (+/- 0)
test parse_fast_uaparser    ... bench:     423,632 ns/iter (+/- 42,520)
test parse_uap              ... bench:     606,682 ns/iter (+/- 65,967)
test parse_uaparser         ... bench:     826,622 ns/iter (+/- 105,940)
test parse_woothee          ... bench:       6,814 ns/iter (+/- 1,924)

benchmark script

for Maintainer

generate code from woothee/woothee dataset & testsets.

$ cargo build --features=generate
$ cargo +nightly fmt
$ cargo test    # and code review!!!

with clippy lints (optional)

$ rustup component add clippy-preview && cargo clippy

Dependencies

~2.2–3.5MB
~56K SLoC