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

# Requirements

> List and iterate compliance requirements with the Rust SDK.

## Methods

```rust theme={null}
client.requirements.list(framework_slug: Option<&str>, page: Option<u32>, per_page: Option<u32>)
    -> Result<Page<Requirement>, Law4DevsError>

client.requirements.iter(framework_slug: Option<&str>, per_page: u32)
    -> impl Stream<Item = Result<Requirement, Law4DevsError>>
```

***

## List Requirements

```rust theme={null}
// All requirements
let page = client.requirements.list(None, None, None).await?;

// Requirements for a specific framework
let page = client.requirements.list(Some("cra"), None, None).await?;
```

***

## Auto-Paginate

```rust theme={null}
use futures::StreamExt;

let mut stream = Box::pin(client.requirements.iter(Some("cra"), 20));
while let Some(result) = stream.next().await {
    let r = result?;
    println!("[{}] {}", r.requirement_type, &r.requirement_text[..60.min(r.requirement_text.len())]);
}
```

***

## `Requirement` Fields

| Field               | Type             | Description                  |
| ------------------- | ---------------- | ---------------------------- |
| `id`                | `u32`            | Internal ID                  |
| `framework_slug`    | `String`         | Parent framework slug        |
| `requirement_type`  | `String`         | Type/category of requirement |
| `requirement_text`  | `String`         | Full requirement text        |
| `article_reference` | `Option<String>` | Source article number        |
| `stakeholder_type`  | `Option<String>` | Target stakeholder           |
