14 个版本
0.6.0 | 2024 年 4 月 18 日 |
---|---|
0.5.1 | 2023 年 8 月 11 日 |
0.5.0 | 2023 年 6 月 29 日 |
0.1.2 | 2023 年 1 月 25 日 |
0.1.0 | 2022 年 12 月 26 日 |
446 在 Rust 模式
每月 74 次下载
20KB
492 行
分页
游标分页的实现。详细信息请参阅测试。
需求
1. 结构 SourceRequest
发送到 API 的源请求
#[derive(Debug, Clone)]
struct SourceRequest {}
2. 结构 Filters
数据源过滤器,不包括限制和偏移量
#[derive(Clone, Debug, Deserialize, PartialEq, Serialize)]
struct Filters {}
3. 结构 Item
数据源实体
#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
struct Item {}
4. 实体 Error
enum AppError {}
所需实现
1. SourceRequest
到 Request<Filters>
转换
impl TryFrom<SourceRequest> for Request<Filters> {}
2. DataSource
trait DataSource<Item, Filters: Clone + PartialEq, OffsetValue: Clone>
用法
有了上述所有内容,您可以使用 pagination
函数以这种方式使用
const DEFAULT_LIMIT: u16 = 100;
let paginated_data = pagination::<Item, Filters, OffsetValue, AppError>(data_source, source_request, DEFAULT_LIMIT).await?;
// {
// "last_cursor": null,
// "has_next_page": false,
// "data": [
// ..items
// ]
// }
依赖关系
~3–5MB
~85K SLoC