#![allow(unused_crate_dependencies)]
use bare_types::sys::{Arch, KernelVersion, OsType, OsVersion};
fn main() {
println!("=== bare-types sys module demo ===\n");
let arch = Arch::current();
println!("Current architecture: {}", arch);
println!(" - 64-bit: {}", arch.is_64_bit());
println!(" - 32-bit: {}", arch.is_32_bit());
println!(" - Pointer width: {} bits\n", arch.pointer_width());
let os = OsType::current();
println!("Current operating system: {}", os);
println!(" - Unix-like: {}", os.is_unix());
println!(" - BSD: {}", os.is_bsd());
println!(" - Desktop: {}\n", os.is_desktop());
let os_ver: OsVersion = "22.04".parse().expect("valid OS version");
println!("OS Version example: {}", os_ver);
println!(" - Major: {}", os_ver.major());
println!(" - Minor: {}", os_ver.minor());
println!(" - Patch: {:?}\n", os_ver.patch());
let kernel: KernelVersion = "6.8.0-40-generic".parse().expect("valid kernel version");
println!("Kernel Version example: {}", kernel);
println!(" - Major: {}", kernel.major());
println!(" - Minor: {}", kernel.minor());
println!(" - Patch: {}", kernel.patch());
println!(" - Release: {:?}", kernel.release());
println!(" - Is stable: {}", kernel.is_stable());
println!(" - Is development: {}\n", kernel.is_development());
println!("All types are:");
println!(" - Compile-time constants for current() methods");
println!(" - Zero-cost abstractions");
println!(" - Fully no_std compatible");
println!(" - Type-safe with validation at construction");
}