Expand description
§Todoist-api
A Rust wrapper for the Todoist REST API v2.
§Features
- Async/await support
- Full CRUD operations for tasks
- Project and label management
- Comprehensive error handling with specific error types
- Rate limiting detection and retry information
- Serde serialization/deserialization
§Example
use todoist_api::{TodoistWrapper, TodoistError, TodoistResult};
use todoist_api::models::CreateTaskArgs;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let todoist = TodoistWrapper::new("your-api-token".to_string());
// Get all tasks with error handling
match todoist.get_tasks().await {
Ok(tasks) => println!("Found {} tasks", tasks.len()),
Err(TodoistError::RateLimited { retry_after, message }) => {
println!("Rate limited: {} (retry after {} seconds)", message, retry_after.unwrap_or(0));
}
Err(TodoistError::AuthenticationError { message }) => {
println!("Authentication failed: {}", message);
}
Err(e) => println!("Other error: {}", e),
}
// Create a new task
let args = CreateTaskArgs {
content: "Buy groceries".to_string(),
project_id: None,
..Default::default()
};
let new_task = todoist.create_task(&args).await?;
println!("Created task: {}", new_task.content);
Ok(())
}
Re-exports§
pub use wrapper::TodoistWrapper;
pub use models::TodoistError;
pub use models::TodoistResult;
pub use models::*;