# mini_exercism
[](https://github.com/clechasseur/mini_exercism/actions/workflows/ci.yml) [](https://codecov.io/gh/clechasseur/mini_exercism) [](https://github.com/clechasseur/mini_exercism/actions/workflows/audit-check.yml) [](https://crates.io/crates/mini_exercism) [](https://crates.io/crates/mini_exercism) [](https://docs.rs/mini_exercism) [](CODE_OF_CONDUCT.md)
Minimalistic Rust library to interact with the [Exercism.org](https://exercism.org) APIs.
## Exerci-what?
[Exercism](https://exercism.org) is a free, not-for-profit platform to learn new programming languages.
It supports a web editor for solving exercises, mentoring with real humans and a lot more.
For more information, see [its about page](https://exercism.org/about).
## Installing
Add `mini_exercism` to your dependencies:
```toml
[dependencies]
mini_exercism = "3.0.0"
```
or by running:
```bash
cargo add mini_exercism
```
## Example
```rust
use mini_exercism::api;
use mini_exercism::api::v2::exercises::Filters;
use mini_exercism::core::Credentials;
async fn get_published_solution_uuids(
api_token: &str,
track: &str,
) -> anyhow::Result<Vec<String>> {
let credentials = Credentials::from_api_token(api_token);
let client = api::v2::Client::builder()
.credentials(credentials)
.build()?;
let filters = Filters::builder().include_solutions(true).build();
let solutions = client.get_exercises(track, Some(filters)).await?.solutions;
Ok(solutions
.into_iter()
.filter(|solution| solution.published_at.is_some())
.map(|solution| solution.uuid)
.collect())
}
```
For more information, see [the docs](https://docs.rs/mini_exercism).
## Minimum Rust version
`mini_exercism` currently builds on Rust 1.64 or newer.