我想为activx中的查询值设置默认值。
我知道Rust标准库中有一个用于结构的Default
特性,但老实说,我不知道如何在这种情况下应用它。
在我的情况下,请求查询可能提供也可能不提供分页值page和page_size
。
以下是我要做的:
src/adapter.rs(我的处理程序模块(
pub mod Basic {
#[derive(Deserialize, Default)]
pub struct ListQuery {
page: i64,
per_page: i64,
}
pub async fn articles_list(listQuery: Query<ListQuery>) -> impl Responder {
let query_options = ListQuery;
// should default to { page: 1, per_page: 10 }
// ...
}
}
那么,如果没有给出查询参数,我怎么能得到值为10的per_page
呢?
[derive(Default)]
宏通过在所有元素上调用::default
来派生默认实现。对于i64,这将导致0。您实际想要做的是自己实现Default
:
#[derive(Deserialize)]
pub struct ListQuery {
page: i64,
per_page: i64,
}
impl Default for ListQuery {
fn default() -> Self {
ListQuery {
page: 1,
per_page: 10
}
}
}
现在,这将为您提供所需的默认值。