Skip to content

A JavaScript-like nested object-like structure non-fallible path access interface. Access your data without serializing it just like you do in your JavaScript projects.

License

Unknown, GPL-3.0 licenses found

Licenses found

Unknown
LICENSE
GPL-3.0
GPLv3-LICENSE
Notifications You must be signed in to change notification settings

FlakySL/dyn_path

dyn_path

Crates.io License Docs.rs Downloads Codecov tests discord

A JavaScript-like nested object-like structure non-fallible path access interface.

This library permits the user to access values in nested structures trough the use of get methods that return Option<T>. This may be used to access specific API data without serializing it into multiple structures and making a mess.

Table of Contents 📖

Use Cases 🔍

Imagine you just accessed a song API, this API describes everything you may or may not want to know about a specific song or songs. With the help of computed indexes you can access the same path multiple times in a variable way.

Lets try it.

use serde_json::Value as JsonValue;
use reqwest::get;
use dyn_path::dyn_access;

let response = get("https://api.platform-ending-with-fy.com/v1/tracks/5cbpoIu3YjoOwbBDGUEp3P")
	.await?
	.json::<JsonValue>()
	.await?;

let song_name = dyn_access!(response.album.name);
let song_main_artist = dyn_access!(response.album.artists[0].name);

assert_eq!(song_name, "Car Radio");
assert_eq!(song_main_artist, "Twenty One Pilots");

Obviously this isn't a real call to a real API, but the intention can be inferred from this example anyways.

Installation 📦

Add the following to your Cargo.toml under the dependencies section

dyn_path = "1.0.7"

No std 💡

This crate supports no_std, meaning you can use it in your project without depending on specific system I/O or anything else.

The crate has a default feature enabled which is std, with this feature the crate doesn't really use std but it pre-includes alloc which permits the use of the dyn_path macro, which uses String to describe a path.

You can also disable the default features and the crate will annotate no_std. Then use the alloc feature if you want to have the dyn_path macro enabled.

License 📜

This repository is dual licensed, TLDR. If your repository is open source, the library is free of use, otherwise contact licensing@flaky.es for a custom license for your use case.

For more information read the license file.

About

A JavaScript-like nested object-like structure non-fallible path access interface. Access your data without serializing it just like you do in your JavaScript projects.

Topics

Resources

License

Unknown, GPL-3.0 licenses found

Licenses found

Unknown
LICENSE
GPL-3.0
GPLv3-LICENSE

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Contributors 3

  •  
  •  
  •