linux-procfs 0.4.0

The linux-procfs is the data snap library for the `/proc/` filesystem on the linux os.
Documentation
# Refactoring Report: Robust Error Handling

## Overview
The `linux-procfs` library has been refactored to replace panic-prone logic with standard Rust `Result`-based error handling. This change ensures that applications using this library can gracefully handle unexpected system states or malformed `/proc` files without crashing.

## Key Changes

### 1. New Error System (`src/error.rs`)
- Introduced `ProcError` enum covering:
  - `Io`: Standard I/O errors.
  - `Utf8`: UTF-8 decoding errors.
  - `ParseInt` / `ParseFloat`: Standard parsing errors.
  - `UnexpectedFormat(String)`: Specific formatting issues.
  - `PermissionDenied` / `NotFound`: Explicit variants for common file system issues.
- Added `ProcResult<T>` alias for `Result<T, ProcError>`.

### 2. Safer Utilities (`src/util.rs`)
- Replaced string-formatted path construction with `PathBuf::join` to prevent panics on non-UTF-8 paths.
- Added `try_update` methods that return `io::Result`, used by the main API to propagate errors.
- Fixed borrow checker issues in buffer management by separating mutable and immutable access scopes.

### 3. Fallible API (`src/lib.rs`)
- All `get_*` methods (e.g., `get_stat`, `get_loadavg`, `get_pidentries`) now return `ProcResult<T>`.
- Internal logic now uses the `?` operator to propagate errors up from the parsers.

### 4. Robust Parsers (`src/parser/*.rs`)
- Eliminated all occurrences of `.unwrap()` and `unreachable!()` during the scanning and parsing process.
- Introduced `try_scan!` macro (and similar logic) to return `ProcError::UnexpectedFormat` when delimiters or expected fields are missing.
- Ensured all parsers return `ProcResult`.

### 5. Verified Tests (`tests/*.rs`)
- Updated all integration tests to handle the new `Result` return types using `.unwrap()` where success is expected.
- Fixed several latent bugs in tests (e.g., variable naming mismatches in `more_test*.rs`).
- Updated documentation examples in `src/lib.rs` to ensure they are runnable and correct.

## Conclusion
The library is now significantly more "production-ready". While it remains high-performance, it no longer risks crashing the host process due to minor variations in the Linux `/proc` filesystem interface.

---
Date: 2026-05-24
Status: Completed