paginate

Crates.iopaginate
lib.rspaginate
version1.1.11
sourcesrc
created_at2020-03-16 06:20:49.673199
updated_at2022-04-11 10:05:11.522886
descriptionA framework agnostic pagination crate, that is especially suited for databases, slices and collections. Paginate calculates the range of pages indexes, making it ideal for accessing slices, chunking data and querying databases.
homepagehttps://daniel-samson.github.io/paginate-docs/
repositoryhttps://github.com/daniel-samson/paginate.git
max_upload_size
id219278
size33,653
Daniel Samson (daniel-samson)

documentation

https://docs.rs/paginate

README

A framework agnostic pagination crate, that is especially suited for databases, slices and collections. Paginate calculates the range of page indexes, making it ideal for accessing slices, chunking data and querying databases.

Project Status

crates.io CI Docs codecov book stars - paginate forks - paginate

Installation

Add the following line to your Cargo.toml file:

paginate = "^1"

Examples

To iterate over each page:

use paginate::Pages;

fn main() {
    let total_items = 100;
    let items_per_page = 5;
    let pages = Pages::new(total_items, items_per_page);
    println!("total pages: {}", pages.page_count());
    for page in pages.into_iter() {
        println!("offset: {}, total: {}, start: {}, end: {}", page.offset, page.length, page.start, page.end);
    }
}

To get the pagination of a specific offset:

use paginate::Pages;

fn main() {
    let total_items = 35;
    let items_per_page = 5;
    let pages = Pages::new(total_items, items_per_page);
    let page = pages.with_offset(3);
    println!("total pages: {}", pages.page_count());
    println!("offset: {}, total: {}, start: {}, end: {}", page.offset, page.length, page.start, page.end);
}

Getting help

Contribute

Commit count: 105

cargo fmt