eppo 5.2.1

Eppo SDK for Rust
Documentation
# Eppo Rust SDK

![Crates.io Version](https://img.shields.io/crates/v/eppo) ![Crates.io MSRV](https://img.shields.io/crates/msrv/eppo) ![docs.rs](https://img.shields.io/docsrs/eppo)

[Eppo](https://www.geteppo.com/) is a modular flagging and experimentation analysis tool. Eppo's Rust SDK is designed to facilitate assignments in multi-user server-side contexts. You will need an Eppo account before proceeding.

Refer to [SDK documentation](https://docs.geteppo.com/feature-flags/sdks/rust) for how to install and use the SDK.

## Features

- Feature gates
- Kill switches
- Progressive rollouts
- A/B/n experiments
- Mutually exclusive experiments (Layers)
- Dynamic configuration

## Installation

Add it with cargo:
```sh
cargo add eppo
```

Or add it to `Cargo.toml` manually:
```toml
[dependencies]
eppo = "0.1.0"
```

## Quick Start

Initialize an instance of Eppo's client. Once initialized, the client can be used to make assignments in your app.

### Initialize Client

```rust
use eppo::ClientConfig;

let mut client = ClientConfig::from_api_key("api-key").to_client();
let thread = client.start_poller_thread();

thread.wait_for_configuration_timeout(std::time::Duration::from_secs(5));
```

### Assign Anywhere

```rust
let user = get_current_user();

let assignment = client.get_assignment(
    "show-new-feature",
    &user.id,
    &user.attributes,
);
```

## Assignment Logger

Pass a logging callback function to the `assignment_logger` method in `ClientConfig` when initializing the SDK to capture assignment data for analysis.

```rust
struct MyAssignmentLogger;

impl AssignmentLogger for MyAssignmentLogger {
    fn log_assignment(&self, event: AssignmentEvent) {
        // Implement assignment logging logic here
    }
}
```