Skip to main content

ferroui_dynamic_data/cache/
page_response.rs

1//! `IPageResponse` and `PageResponse` (`Cache/IPageResponse.cs`, `Cache/PageResponse.cs`).
2
3use std::fmt;
4
5/// The page that a paged change set holds (`IPageResponse`).
6pub trait IPageResponse {
7    /// The page, from 1 (`Page`).
8    fn page(&self) -> usize;
9    /// The number of pages (`Pages`).
10    fn pages(&self) -> usize;
11    /// The number of items of a page (`PageSize`).
12    fn page_size(&self) -> usize;
13    /// The number of items of all the pages (`TotalSize`).
14    fn total_size(&self) -> usize;
15}
16
17/// The page that a paged change set holds (`PageResponse`). Two responses are equal when their
18/// parts are (`PageResponse.DefaultComparer`).
19#[derive(Clone, Copy, Debug, Default, PartialEq, Eq, Hash)]
20pub struct PageResponse {
21    page_size: usize,
22    total_size: usize,
23    page: usize,
24    pages: usize,
25}
26
27impl PageResponse {
28    /// The page `page` of `pages`, of `page_size` items, of `total_size` items in all
29    /// (`PageResponse(int pageSize, int totalSize, int page, int pages)`).
30    pub const fn new(page_size: usize, total_size: usize, page: usize, pages: usize) -> Self {
31        Self { page_size, total_size, page, pages }
32    }
33
34    /// The page, from 1 (`Page`).
35    pub const fn page(&self) -> usize {
36        self.page
37    }
38
39    /// The number of pages (`Pages`).
40    pub const fn pages(&self) -> usize {
41        self.pages
42    }
43
44    /// The number of items of a page (`PageSize`).
45    pub const fn page_size(&self) -> usize {
46        self.page_size
47    }
48
49    /// The number of items of all the pages (`TotalSize`).
50    pub const fn total_size(&self) -> usize {
51        self.total_size
52    }
53}
54
55impl IPageResponse for PageResponse {
56    fn page(&self) -> usize {
57        self.page
58    }
59
60    fn pages(&self) -> usize {
61        self.pages
62    }
63
64    fn page_size(&self) -> usize {
65        self.page_size
66    }
67
68    fn total_size(&self) -> usize {
69        self.total_size
70    }
71}
72
73impl fmt::Display for PageResponse {
74    /// `ToString`.
75    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
76        write!(f, "Page: {}, PageSize: {}, Pages: {}, TotalSize: {}", self.page, self.page_size, self.pages, self.total_size)
77    }
78}