Skip to main content

Crate canvas_lms_api

Crate canvas_lms_api 

Source
Expand description

§canvas-lms-api

An async Rust client for the Instructure Canvas LMS REST API.

Licensed under the MIT License.

§Quickstart

use canvas_lms_api::Canvas;

let canvas = Canvas::new("https://canvas.example.edu", "your-access-token")?;

// Fetch a course
let course = canvas.get_course(1).await?;
println!("{}", course.name.as_deref().unwrap_or_default());

// Stream all assignments lazily
let assignments = course.get_assignments().collect_all().await?;
println!("{} assignments", assignments.len());

§Features

FeatureDefaultDescription
asyncyesAsync API via tokio + reqwest
blockingnoCanvasBlocking — sync wrapper, no async/.await needed
new-quizzesnoNew Quizzes endpoint (/api/quiz/v1/)
graphqlnoGraphQL endpoint support
fullnoAll optional features

§Pagination

Methods returning multiple resources return a PageStream<T>, which fetches pages lazily from Canvas’s paginated API. Call .collect_all() to gather everything into a Vec, or iterate page-by-page as needed.

Re-exports§

pub use client::Canvas;
pub use error::CanvasError;
pub use error::Result;
pub use pagination::PageStream;
pub use upload::UploadRequest;

Modules§

client
error
pagination
resources
upload

Derive Macros§

CanvasResource
Derive macro that generates a req() helper method returning &Arc<Requester>.