> ## Documentation Index
> Fetch the complete documentation index at: https://praison.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Todo List • Rust AI Agent SDK

> TodoList: A todo list.

# TodoList

> Defined in the [**planning**](../modules/planning) module.

<Badge color="orange">Rust AI Agent SDK</Badge>

A todo list.

## Fields

| Name    | Type                  | Description       |
| ------- | --------------------- | ----------------- |
| `name`  | `String`              | List name         |
| `items` | `Vec&lt;TodoItem&gt;` | Items in the list |

## Methods

### `new`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn new(name: impl Into<String>) -> Self
```

Create a new todo list.

**Parameters:**

| Name   | Type                      |
| ------ | ------------------------- |
| `name` | `impl Into&lt;String&gt;` |

### `add`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn add(&mut self, item: TodoItem) -> ()
```

Add an item.

**Parameters:**

| Name   | Type       |
| ------ | ---------- |
| `item` | `TodoItem` |

### `get`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn get(&self, id: &str) -> Option<&TodoItem>
```

Get item by ID.

**Parameters:**

| Name | Type   |
| ---- | ------ |
| `id` | `&str` |

### `get_mut`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn get_mut(&mut self, id: &str) -> Option<&mut TodoItem>
```

Get mutable item by ID.

**Parameters:**

| Name | Type   |
| ---- | ------ |
| `id` | `&str` |

### `remove`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn remove(&mut self, id: &str) -> Option<TodoItem>
```

Remove item by ID.

**Parameters:**

| Name | Type   |
| ---- | ------ |
| `id` | `&str` |

### `pending`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn pending(&self) -> Vec<&TodoItem>
```

Get pending items.

### `completed`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn completed(&self) -> Vec<&TodoItem>
```

Get completed items.

### `overdue`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn overdue(&self) -> Vec<&TodoItem>
```

Get overdue items.

### `by_tag`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn by_tag(&self, tag: &str) -> Vec<&TodoItem>
```

Get items by tag.

**Parameters:**

| Name  | Type   |
| ----- | ------ |
| `tag` | `&str` |

### `by_priority`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn by_priority(&self, priority: TodoPriority) -> Vec<&TodoItem>
```

Get items by priority.

**Parameters:**

| Name       | Type           |
| ---------- | -------------- |
| `priority` | `TodoPriority` |

### `len`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn len(&self) -> usize
```

Get item count.

### `is_empty`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn is_empty(&self) -> bool
```

Check if empty.

### `progress`

```rust theme={"theme":{"light":"vitesse-light","dark":"vitesse-dark"}}
fn progress(&self) -> f64
```

Get progress percentage.

## Source

<Card title="View on GitHub" icon="github" href="https://github.com/MervinPraison/PraisonAI/blob/main/src/praisonai-rust/praisonai/src/planning/mod.rs#L311">
  `praisonai/src/planning/mod.rs` at line 311
</Card>
