quickleaf 0.0.1

A simple and efficient in-memory cache with support for filtering, ordering, and limiting results
Documentation
# Quickleaf Cache

Quickleaf Cache is a Rust library that provides a simple and efficient in-memory cache with support for filtering, ordering, and limiting results. It is designed to be lightweight and easy to use.

## Features

- Insert and remove key-value pairs
- Retrieve values by key
- Clear the cache
- List cache entries with support for filtering, ordering, and limiting results
- Custom error handling

## Installation

Add the following to your `Cargo.toml`:

```toml
[dependencies]
quickleaf = "0.1.0"
```

## Usage

Here's a basic example of how to use Quickleaf Cache:

```rust
use quickleaf::{Quickleaf, ListProps, Order, Filter};

fn main() {
    let mut cache = Quickleaf::new(2);
    cache.insert_str("key1", 1);
    cache.insert_str("key2", 2);
    cache.insert_str("key3", 3);

    assert_eq!(cache.get("key1"), None);
    assert_eq!(cache.get("key2"), Some(&2));
    assert_eq!(cache.get("key3"), Some(&3));

    let list_props = ListProps::default()
        .order(Order::Asc)
        .limit(10);

    let result = cache.list(list_props).unwrap();
    for (key, value) in result {
        println!("{}: {}", key, value);
    }
}
```

### Using Filters

You can use filters to narrow down the results when listing cache entries. Here are some examples:

#### Filter by Start With

```rust
use quickleaf::{Quickleaf, ListProps, Order, Filter};

fn main() {
    let mut cache = Quickleaf::new(10);
    cache.insert_str("apple", 1);
    cache.insert_str("banana", 2);
    cache.insert_str("apricot", 3);

    let list_props = ListProps::default()
        .order(Order::Asc)
        .filter(Filter::StartWith("ap"))
        .limit(10);

    let result = cache.list(list_props).unwrap();
    for (key, value) in result {
        println!("{}: {}", key, value);
    }
}
```

#### Filter by End With

```rust
use quickleaf::{Quickleaf, ListProps, Order, Filter};

fn main() {
    let mut cache = Quickleaf::new(10);
    cache.insert_str("apple", 1);
    cache.insert_str("banana", 2);
    cache.insert_str("pineapple", 3);

    let list_props = ListProps::default()
        .order(Order::Asc)
        .filter(Filter::EndWith("apple"))
        .limit(10);

    let result = cache.list(list_props).unwrap();
    for (key, value) in result {
        println!("{}: {}", key, value);
    }
}
```

#### Filter by Start And End With

```rust
use quickleaf::{Quickleaf, ListProps, Order, Filter};

fn main() {
    let mut cache = Quickleaf::new(10);
    cache.insert_str("applemorepie", 1);
    cache.insert_str("banana", 2);
    cache.insert_str("pineapplepie", 3);

    let list_props = ListProps::default()
        .order(Order::Asc)
        .filter(Filter::StartAndEndWith("apple", "pie"))
        .limit(10);

    let result = cache.list(list_props).unwrap();
    for (key, value) in result {
        println!("{}: {}", key, value);
    }
}
```

## Modules

### `error`

Defines custom error types used in the library.

### `filter`

Defines the `Filter` enum used for filtering cache entries.

### `list_props`

Defines the `ListProps` struct used for specifying properties when listing cache entries.

### `quickleaf`

Defines the `Quickleaf` struct which implements the cache functionality.

## Running Tests

To run the tests, use the following command:

```sh
cargo test
```

## License

This project is licensed under the Apache 2.0 License. See the [LICENSE](LICENSE) file for more information.