leyline-http 0.1.5

HTTP client that impersonates Chrome, Firefox, and Safari on the wire: TLS (JA3/JA4), HTTP/2, and HTTP/3 fingerprints
Documentation
use std::sync::{Arc, Mutex};

use super::WriteOrder;

fn recorder(
    log: &Arc<Mutex<Vec<u32>>>,
    value: u32,
) -> Box<dyn FnOnce() -> crate::core::Result<()> + Send> {
    let log = Arc::clone(log);
    Box::new(move || {
        log.lock().unwrap().push(value);
        Ok(())
    })
}

#[test]
fn an_older_save_that_runs_last_does_not_overwrite_a_newer_one() {
    let log = Arc::new(Mutex::new(Vec::new()));
    let mut order = WriteOrder::default();
    let older = order.order(recorder(&log, 1));
    let newer = order.order(recorder(&log, 2));
    newer().unwrap();
    older().unwrap();
    assert_eq!(*log.lock().unwrap(), [2]);
}