Skip to main content

Crate gpui_query

Crate gpui_query 

Source
Expand description

gpui-query — Zero-boilerplate async state management for GPUI.

Inspired by TanStack Query v5, redesigned for GPUI’s synchronous rendering model and Rust’s ownership semantics.

§v2 Improvements over v1

  • Options-first API with sensible defaults — use_query("users", fetcher, cx)
  • Tuple return types — hooks return (Entity<QueryResource<T,E>>, Subscription) for explicit control
  • Signal-always — fetchers always receive QuerySignal for cooperative cancellation
  • Fixed signal lifecycle — signals are cancelled on LatestWins replacement
  • Fixed retry loops — single counter, signal checked between attempts
  • Efficient re-renderscx.notify() only on terminal state changes
  • QueryError: Display + Error — ecosystem interop with ? and anyhow
  • AHashMap for trusted cache keys — ~2x faster lookups
  • Bounded max_pages default — prevents unbounded memory growth
  • Actual mutation GC — no more memory leaks

§Layers

  • core — Serde-only state machine (QueryResource, CachePolicy, etc.)
  • client — GPUI QueryClient registry with type-partitioned buckets
  • hookuse_query() / use_mutation() / use_infinite_query() hooks

§Quick Start

Hooks are re-exported at the crate root for ergonomic imports:

use gpui_query::{use_query, use_mutation, use_infinite_query, QueryClient};

Re-exports§

pub use core::*;core
pub use client::*;client
pub use hook::*;hook

Modules§

clientclient
Layer 1: GPUI QueryClient — global registry for query resources.
corecore
Layer 0: Transport-agnostic query lifecycle primitives.
hookhook
The use_query and use_mutation hooks — ergonomic query and mutation subscriptions for GPUI components.