os-id 3.1.0

Provides OS ids abstractions for process and thread
Documentation
use os_id::{ThreadName, ThreadId};

#[test]
fn should_use_current_thread() {
    let thread1 = ThreadId::current();
    let thread2 = ThreadId::current();

    assert_eq!(thread1, thread2);
    assert_eq!(thread1.as_raw(), thread2.as_raw());

    let another_thread = std::thread::spawn(|| {
        ThreadId::current()
    }).join().unwrap();

    assert_ne!(thread1, another_thread);
    assert_ne!(thread1.as_raw(), another_thread.as_raw());
}

#[test]
fn should_get_current_thread_name() {
    std::thread::Builder::new().name("test".to_owned()).spawn(|| {
        let name = os_id::thread::get_current_thread_name();
        assert_eq!(name, "test");
    }).unwrap().join().unwrap();

    let name = os_id::thread::get_current_thread_name();
    assert_ne!(name, "test");
    assert_ne!(name.as_str(), Ok("test"));
}

#[test]
fn verify_thread_name_struct() {
    const DATA: &str = "1234567891234567";

    for idx in 0..DATA.len() {
        let mut buf = [0u8; 16];
        buf[..idx].copy_from_slice(&DATA.as_bytes()[..idx]);
        let name = ThreadName::name(buf);
        assert_eq!(name, &DATA.as_bytes()[..idx]);
        assert_eq!(name.as_str(), Ok(&DATA[..idx]));
    }
}