pub trait PaginationItem {
type Id: Ord;
fn item_id(&self) -> Self::Id;
}
pub trait PaginationRequest: misskey_core::Request {
type Item: PaginationItem;
fn set_since_id(&mut self, since_id: <Self::Item as PaginationItem>::Id);
fn set_until_id(&mut self, until_id: <Self::Item as PaginationItem>::Id);
fn set_limit(&mut self, limit: u8);
}
impl<R: ?Sized> PaginationRequest for &'_ mut R
where
R: PaginationRequest,
{
type Item = R::Item;
fn set_since_id(&mut self, since_id: <Self::Item as PaginationItem>::Id) {
R::set_since_id(self, since_id)
}
fn set_until_id(&mut self, until_id: <Self::Item as PaginationItem>::Id) {
R::set_until_id(self, until_id)
}
fn set_limit(&mut self, limit: u8) {
R::set_limit(self, limit)
}
}
impl<R: ?Sized> PaginationRequest for Box<R>
where
R: PaginationRequest,
{
type Item = R::Item;
fn set_since_id(&mut self, since_id: <Self::Item as PaginationItem>::Id) {
R::set_since_id(self, since_id)
}
fn set_until_id(&mut self, until_id: <Self::Item as PaginationItem>::Id) {
R::set_until_id(self, until_id)
}
fn set_limit(&mut self, limit: u8) {
R::set_limit(self, limit)
}
}
pub trait OffsetPaginationRequest: misskey_core::Request {
type Item;
fn set_offset(&mut self, offset: u64);
fn set_limit(&mut self, limit: u8);
}
impl<R: ?Sized> OffsetPaginationRequest for &'_ mut R
where
R: OffsetPaginationRequest,
{
type Item = R::Item;
fn set_offset(&mut self, offset: u64) {
R::set_offset(self, offset)
}
fn set_limit(&mut self, limit: u8) {
R::set_limit(self, limit)
}
}
impl<R: ?Sized> OffsetPaginationRequest for Box<R>
where
R: OffsetPaginationRequest,
{
type Item = R::Item;
fn set_offset(&mut self, offset: u64) {
R::set_offset(self, offset)
}
fn set_limit(&mut self, limit: u8) {
R::set_limit(self, limit)
}
}