# query.schema.FilterSchema

- **Module:** query.schema
- **Package:** libtmux
- **Language:** Rust
- **Kind:** trait
- **Source:** https://github.com/libtmux/libtmux-rs/blob/8a648c0894dfffc9303583f753b6c8ae01f2fe76/crates/libtmux/src/query/schema.rs#L36
- **Page:** https://libtmux.org/reference/rs/query-schema-filterschema/

A filter target whose portable expression grammar can be described.

`#[derive(libtmux::Filterable)]` implements this and [`Filterable`] from
the same field declaration. Implement it manually only when a handwritten
[`Filterable`] target must also expose a `JsonSchema` for its
[`FilterExpr`].

The schema closes targets, fields, operators, relations, and JSON value
families. Deserialization remains authoritative for fixed-width integer
bounds, regex compilation, and whole-expression complexity limits.

## Example

```rust
use libtmux::query::FilterExpr;

#[derive(libtmux::Filterable)]
#[filterable(target = "task", crate = "libtmux")]
struct Task {
    name: String,
    done: bool,
}

let schema = schemars::schema_for!(FilterExpr<Task>);
assert!(schema.as_object().is_some());
```
