# A simple Rust crate for host discovery

> Make more decisions based on the characteristics of the environment you are working in.

- Basic Usage

```rust
use host_discovery::{Environment, CrossPlatform, LinuxSystem};

fn main() {
    let os = Environment.get_os();
    let distro = Environment.get_distro();
    let arch = Environment.get_arch();
    println!("OS: {}, Linux Distribution: {}, Arch: {}", os, distro, arch);
}
```

- API Methods
> ***trait*** `CrossPlatform`
  
  - ***fn*** `get_os`: Returns a variant of OperatingSystem
  - ***fn*** `get_arch`: Returns a variant of Architecture
> ***trait*** `LinuxSystem`

  - ***fn*** `cpuinfo_cores`: Returns a u32 representing the CPU core count
  - ***fn*** `cpuinfo_model`: Returns a String containing the name of the CPU model
  - ***fn*** `get_distro`: Returns a String containing the name of the running Linux distribution
  - ***fn*** `is_subsystem_env`: Returns a boolean based on whether the Linux environment is a Windows subsystem
> ***trait*** `WindowsSystem`

  - ***fn*** `get_edition` Returns a String containing the Windows edition via the registry
    
### Add to your project
```sh 
    cargo add host_discovery
```

> or

```sh
# For Windows specific features

  cargo add host_discovery --features windows
```

- Planned Features
  - GPU enumeration & extended device detection (CPU, etc.).

