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
| Feature | Default | Description |
|---|---|---|
async | yes | Async API via tokio + reqwest |
blocking | no | CanvasBlocking — sync wrapper, no async/.await needed |
new-quizzes | no | New Quizzes endpoint (/api/quiz/v1/) |
graphql | no | GraphQL endpoint support |
full | no | All 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§
Derive Macros§
- Canvas
Resource - Derive macro that generates a
req()helper method returning&Arc<Requester>.