darwin-metrics 0.1.5

A Rust library exposing native macOS system metrics
# Rust API Guidelines Checklist

## Checklist

### Naming

- [x] **[C-CASE]https://rust-lang.github.io/api-guidelines/naming.html#c-case**: Types, traits, and enum variants use `UpperCamelCase`; modules, functions, methods, and macro names use `snake_case`; constants use `SCREAMING_SNAKE_CASE`
- [x] **[C-CONV]https://rust-lang.github.io/api-guidelines/naming.html#c-conv**: Methods on collections that produce iterators follow naming conventions: `iter()`, `iter_mut()`, `into_iter()`
- [x] **[C-ITER]https://rust-lang.github.io/api-guidelines/naming.html#c-iter**: Iterator type names match the methods that produce them
- [x] **[C-ITER-TY]https://rust-lang.github.io/api-guidelines/naming.html#c-iter-ty**: Iterators implement the right iterator traits: `Iterator`, `DoubleEndedIterator`, `ExactSizeIterator`
- [x] **[C-GETTER]https://rust-lang.github.io/api-guidelines/naming.html#c-getter**: Methods that get a single property have naming conventions: prefer `name()` not `get_name()`
- [x] **[C-BOOL]https://rust-lang.github.io/api-guidelines/naming.html#c-bool**: Methods returning `bool` have names matching `is_*`, `has_*`, `can_*`, etc.
- [x] **[C-WORD-ORDER]https://rust-lang.github.io/api-guidelines/naming.html#c-word-order**: Types use consistent word order in names: `*Map` not `Map*`

### Interoperability

- [x] **[C-COMMON-TRAITS]https://rust-lang.github.io/api-guidelines/interoperability.html#c-common-traits**: Implement standard/common traits where appropriate: `Copy`, `Clone`, `Eq`, `PartialEq`, `Ord`, `PartialOrd`, `Hash`, `Debug`, `Display`
- [x] **[C-CONV-TRAITS]https://rust-lang.github.io/api-guidelines/interoperability.html#c-conv-traits**: Implement conversion traits when appropriate: `From`, `TryFrom`, `AsRef`, `AsMut`
- [x] **[C-COLLECT]https://rust-lang.github.io/api-guidelines/interoperability.html#c-collect**: Implement `FromIterator` for collections
- [x] **[C-SERDE]https://rust-lang.github.io/api-guidelines/interoperability.html#c-serde**: If types support serialization/deserialization, they use Serde instead of ad-hoc approaches
- [x] **[C-STRING-DISPLAY]https://rust-lang.github.io/api-guidelines/interoperability.html#c-string-display**: Display-formatted strings avoid non-standard formatting tokens
- [x] **[C-SEND-SYNC]https://rust-lang.github.io/api-guidelines/interoperability.html#c-send-sync**: Types are threadsafe (`Send`/`Sync`) when possible
- [x] **[C-SEND-SYNC-ERR]https://rust-lang.github.io/api-guidelines/interoperability.html#c-send-sync-err**: Error types are `Send` and `Sync`

### Macros

- [x] **[C-EVOCATIVE]https://rust-lang.github.io/api-guidelines/macros.html#c-evocative**: Macro names are evocative and clear, with `!` part of the name
- [x] **[C-MACRO-ATTR]https://rust-lang.github.io/api-guidelines/macros.html#c-macro-attr**: Complex functionality is exposed via attributes, not function-like macros
- [x] **[C-WORD-ORDER-MACRO]https://rust-lang.github.io/api-guidelines/macros.html#c-word-order-macro**: Macros follow consistent naming conventions like types/functions

### Documentation

- [x] **[C-CRATE-DOC]https://rust-lang.github.io/api-guidelines/documentation.html#c-crate-doc**: Crate has non-empty top-level documentation explaining the crate's purpose and usage
- [x] **[C-EXAMPLE]https://rust-lang.github.io/api-guidelines/documentation.html#c-example**: Examples show how to use the crate's functionality
- [x] **[C-FEATURE-DOC]https://rust-lang.github.io/api-guidelines/documentation.html#c-feature-doc**: All optional features listed in Cargo.toml are documented in crate-level docs
- [x] **[C-QUESTION-MARK]https://rust-lang.github.io/api-guidelines/documentation.html#c-question-mark**: Documentation examples use `?` instead of `try!`, `unwrap()`, or `expect()`
- [x] **[C-ERROR-DOC]https://rust-lang.github.io/api-guidelines/documentation.html#c-error-doc**: Error conditions documented in function docs
- [x] **[C-PANIC-DOC]https://rust-lang.github.io/api-guidelines/documentation.html#c-panic-doc**: Functions that panic explicitly documented
- [x] **[C-LINK]https://rust-lang.github.io/api-guidelines/documentation.html#c-link**: Docs use hyperlinks to relevant types and functions
- [x] **[C-CI]https://rust-lang.github.io/api-guidelines/documentation.html#c-ci**: Examples in documentation work and are tested
- [x] **[C-HTML-ROOT]https://rust-lang.github.io/api-guidelines/documentation.html#c-html-root**: Crate sets html_root_url in documentation (`#![doc(html_root_url = "...")]`)
- [x] **[C-DOC-RUST]https://rust-lang.github.io/api-guidelines/documentation.html#c-doc-rust**: Rust code in documentation is correct and compiles

### Predictability

- [x] **[C-SMART-PTR]https://rust-lang.github.io/api-guidelines/predictability.html#c-smart-ptr**: Smart pointers follow standard library patterns: `Deref`, `AsRef`
- [x] **[C-CONV-SPECIFIC]https://rust-lang.github.io/api-guidelines/predictability.html#c-conv-specific**: Conversions are specific and use the appropriate traits
- [x] **[C-METHOD]https://rust-lang.github.io/api-guidelines/predictability.html#c-method**: Methods are taken by self, not specific types
- [x] **[C-IMPLEMENTS]https://rust-lang.github.io/api-guidelines/predictability.html#c-implements**: Functions that implement traits use the trait's name in their name
- [x] **[C-OBJECT-ORIENT]https://rust-lang.github.io/api-guidelines/predictability.html#c-object-orient**: Prefer methods over functions if there's a clear receiver
- [x] **[C-RAII]https://rust-lang.github.io/api-guidelines/predictability.html#c-raii**: Types provide RAII (Resource Acquisition Is Initialization) guarantee
- [x] **[C-STRUCT-PRIVATE]https://rust-lang.github.io/api-guidelines/predictability.html#c-struct-private**: Structs have private fields with public getters/setters when needed
- [x] **[C-NEWTYPE]https://rust-lang.github.io/api-guidelines/predictability.html#c-newtype**: Consider using newtypes to enforce invariants
- [x] **[C-SEALED]https://rust-lang.github.io/api-guidelines/predictability.html#c-sealed**: Traits are "sealed" (private) when not designed for implementation outside the crate

### Flexibility

- [x] **[C-INTERMEDIATE]https://rust-lang.github.io/api-guidelines/flexibility.html#c-intermediate**: Functions expose intermediate types for flexibility
- [x] **[C-CALLER-CONTROL]https://rust-lang.github.io/api-guidelines/flexibility.html#c-caller-control**: Control flow provided to caller instead of callback functions when possible
- [x] **[C-GENERIC]https://rust-lang.github.io/api-guidelines/flexibility.html#c-generic**: Free functions are generic over input when possible
- [x] **[C-IMPL-TRAIT]https://rust-lang.github.io/api-guidelines/flexibility.html#c-impl-trait**: Methods use `impl Trait` when appropriate to hide implementation details

### Type Safety

- [x] **[C-NEWTYPE-HIDE]https://rust-lang.github.io/api-guidelines/type-safety.html#c-newtype-hide**: Newtypes are used to hide implementation details
- [x] **[C-OWNERSHIP]https://rust-lang.github.io/api-guidelines/type-safety.html#c-ownership**: APIs use Rust's ownership system to ensure correct use
- [x] **[C-VALIDATE]https://rust-lang.github.io/api-guidelines/type-safety.html#c-validate**: Validate input and fail early when invalid
- [x] **[C-DOWNCAST]https://rust-lang.github.io/api-guidelines/type-safety.html#c-downcast**: Avoid unnecessary type downcasting
- [x] **[C-OPAQUE]https://rust-lang.github.io/api-guidelines/type-safety.html#c-opaque**: Use opaque types like `&Path` instead of concrete ones like `&str` when possible

### Dependability

- [x] **[C-STABLE]https://rust-lang.github.io/api-guidelines/dependability.html#c-stable**: Public API uses stable features when possible
- [x] **[C-PREFER-RESULT]https://rust-lang.github.io/api-guidelines/dependability.html#c-prefer-result**: Use `Result` instead of panics for errors
- [x] **[C-NO-PANIC]https://rust-lang.github.io/api-guidelines/dependability.html#c-no-panic**: Functions don't panic under normal operation
- [x] **[C-ERROR-TYPE]https://rust-lang.github.io/api-guidelines/dependability.html#c-error-type**: Error types are meaningful and well-structured
- [x] **[C-FALLIBLE-CLOSE]https://rust-lang.github.io/api-guidelines/dependability.html#c-fallible-close**: Fallible resource closures propagate errors
- [x] **[C-FUTURE-PROOFING]https://rust-lang.github.io/api-guidelines/dependability.html#c-future-proofing**: Use non-exhaustive enums for future-proofing
- [x] **[C-REPR-TRANSPARENT]https://rust-lang.github.io/api-guidelines/dependability.html#c-repr-transparent**: Single-field wrapper structs use `#[repr(transparent)]` when appropriate

### Debuggability

- [x] **[C-DEBUG]https://rust-lang.github.io/api-guidelines/debuggability.html#c-debug**: All public types implement `Debug`
- [x] **[C-DEBUG-DERIVE]https://rust-lang.github.io/api-guidelines/debuggability.html#c-debug-derive**: Derive `Debug` when possible
- [x] **[C-DEBUG-BUILDER]https://rust-lang.github.io/api-guidelines/debuggability.html#c-debug-builder**: Use debug builder API for complex `Debug` implementations

### Future Proofing

- [x] **[C-EDITION]https://rust-lang.github.io/api-guidelines/future-proofing.html#c-edition**: Specify Rust edition in Cargo.toml
- [x] **[C-SEMVER]https://rust-lang.github.io/api-guidelines/future-proofing.html#c-semver**: Respect semantic versioning
- [x] **[C-SVO]https://rust-lang.github.io/api-guidelines/future-proofing.html#c-svo**: Sealed Vtable Optimization (avoid boxing trait objects when possible)
- [x] **[C-BLANKET]https://rust-lang.github.io/api-guidelines/future-proofing.html#c-blanket**: Avoid overly generic blanket implementations

### Necessities

- [x] **[C-FILENAME]https://rust-lang.github.io/api-guidelines/necessities.html#c-filename**: File names follow crate name in `kebab-case`
- [x] **[C-METADATA]https://rust-lang.github.io/api-guidelines/necessities.html#c-metadata**: Include all useful metadata in Cargo.toml
- [x] **[C-DOCS-RS]https://rust-lang.github.io/api-guidelines/necessities.html#c-docs-rs**: Ensure docs.rs documentation builds successfully with all features
- [x] **[C-NO-STD]https://rust-lang.github.io/api-guidelines/necessities.html#c-no-std**: Document `no_std` support appropriately if provided
- [x] **[C-REEXPORT]https://rust-lang.github.io/api-guidelines/necessities.html#c-reexport**: Re-export important types at crate root or appropriate modules
- [x] **[C-PERMISSIVE]https://rust-lang.github.io/api-guidelines/necessities.html#c-permissive**: Ensure license is permissive enough for users
- [x] **[C-CLIPPY]https://rust-lang.github.io/api-guidelines/necessities.html#c-clippy**: Code passes Clippy checks within reason
- [x] **[C-DENY-WARNINGS]https://rust-lang.github.io/api-guidelines/necessities.html#c-deny-warnings**: Do not use
  `#![deny(warnings)]` in published code