forkguard 0.1.3

if guard.detected_fork() { ... }
Documentation
# forkguard

[![Crates.io](https://img.shields.io/crates/v/forkguard)](https://crates.io/crates/forkguard)
[![License](https://img.shields.io/crates/l/forkguard)](https://github.com/LiosK/forkguard-rs/blob/main/LICENSE)

A lightweight crate for detecting process forks.

```rust
let mut guard = forkguard::new();

// Some time later...
if guard.detected_fork() {
    // Handle the fork (e.g., re-initialize state)
}
```

This crate provides `Guard` types that can detect if the current process has
been forked since the last check. This is useful for resetting state (like
random number generators or connection pools) that should not be shared between
a parent and its forked child.

Depending on the platform and enabled features, `new()` returns one of three
specialized `Guard` flavors:

- `atfork::Guard` (Unix with `atfork` crate feature): Uses `pthread_atfork()` to
  update the global state on fork. This is the most efficient detection
  mechanism for supported Unix-like systems, though the usual caveats of fork
  handlers apply.
- `pid::Guard` (Unix default): Tracks the process ID and detects changes. This
  is a simple and sufficiently efficient option for Unix-like platforms unless
  `getpid()` overhead is a concern.
- `noop::Guard` (Non-Unix): Provides a no-op implementation that always returns
  `false`, used on platforms where fork detection is not required.

The top-level `forkguard::Guard` resolves to the active flavor.

## Crate features

- `atfork` (optional): See the above description.

This crate lets downstream users opt-in to the `atfork` feature even when the
intermediate dependencies do not. To do this, add the following to your
`Cargo.toml` no matter if your crate uses `forkguard` directly:

```toml
[dependencies]
forkguard = { version = "0.1", features = ["atfork"] }
```

Alternatively, add the following to `Cargo.toml`:

```toml
[dependencies]
forkguard = "0.1"
```

And then enable the feature in your build command:

```bash
cargo build --features forkguard/atfork
```

## License

Licensed under the Apache License, Version 2.0.