unleash-yggdrasil

Crates.iounleash-yggdrasil
lib.rsunleash-yggdrasil
version0.14.0
sourcesrc
created_at2023-01-16 12:10:00.229865
updated_at2024-10-29 11:17:28.23225
descriptionThis is the Unleash SDK domain logic extracted into a library to facilitate building your own Unleash SDKs in anything, anywhere.
homepage
repository
max_upload_size
id760135
size201,820
David Leek (daveleek)

documentation

README

Yggdrasil

Yggdrasil is a Rust project designed to create the core of the Unleash SDK domain logic in a single language. This crate is the Rust logic extracted into a standalone crate so that the logic can be used natively inside a Rust application. This is a very experimental crate, so if you're looking to connect a Rust application to Unleash, you should use the official Rust SDK instead, the API and philosophy here are subject to change until this is in stable.

Using Yggdrasil in a Rust project

The heart of Yggdrasil is the EngineState struct, this is a lightweight struct that does very little on its own, it's cheap to create but you probably only need/want one of them:


let engine = EngineState::default();

The engine needs to be populated with an Unleash response before it will return anything useful. The shape of the data here should be identical to the response returned by Unleash, if you'd like to handroll your own data, you can check out the format of the ClientFeatures struct here.


let spec_data = "";// Some json blob, matching the Unleash format

let unleash_data: ClientFeatures = serde_json::from_str(&spec_data).unwrap();

engine.take_state(unleash_data);

Now you can query the engine for a given toggle:

let context = InnerContext::default();

let enabled = engine.is_enabled("my-toggle-name", &context);

//Do something with the enabled state here

Releasing

cargo smart-release -u -b patch unleash-yggdrasil

Commit count: 0

cargo fmt