Skip to main content

rust_ynab/
lib.rs

1//! A Rust client for the [YNAB API](https://api.ynab.com).
2//!
3//! # Quick Start
4//!
5//! ```rust,no_run
6//! use rust_ynab::{Client, PlanId};
7//!
8//! #[tokio::main]
9//! async fn main() -> Result<(), Box<dyn std::error::Error>> {
10//!     let client = Client::new(&std::env::var("YNAB_TOKEN")?)?;
11//!     let plans = client.get_plans().include_accounts().send().await?;
12//!     for plan in plans {
13//!         println!("{}", plan.name);
14//!     }
15//!     Ok(())
16//! }
17//! ```
18
19mod ynab;
20
21#[cfg(feature = "polars")]
22pub use ynab::polars::{IntoDataFrame, account_debt_history};
23
24#[cfg(feature = "oauth")]
25pub use ynab::oauth::{OAuthConfig, OAuthTokens};
26
27pub use ynab::account::{Account, AccountType, SaveAccount, SaveAccountType};
28pub use ynab::category::{
29    Category, CategoryGroup, GoalType, NewCategory, SaveCategory, SaveCategoryGroup,
30    SaveMonthCategory,
31};
32pub use ynab::client::Client;
33pub use ynab::common::{CurrencyFormat, DateFormat, ServerKnowledge};
34pub use ynab::errors::{ApiError, Error};
35pub use ynab::month::Month;
36pub use ynab::movements::{MoneyMovement, MoneyMovementGroup};
37pub use ynab::payee::{Payee, PayeeLocation, PostPayee, SavePayee};
38pub use ynab::plan::{Plan, PlanDetails, PlanId, PlanSettings};
39pub use ynab::transaction::{
40    ClearedStatus, ExistingTransaction, FlagColor, Frequency, GetHybridTransactionsBuilder,
41    HybridTransaction, HybridTransactionType, NewTransaction, SaveScheduledTransaction,
42    SaveSubTransaction, SaveTransactionResponse, SaveTransactionWithIdOrImportId,
43    SaveTransactionsResponse, ScheduledSubtransaction, ScheduledTransaction,
44    ScheduledTransactionSummary, Subtransaction, Transaction, TransactionSummary, TransactionType,
45};
46pub use ynab::user::User;
47
48/// Converts a YNAB milliunit amount to a dollar amount.
49/// For display only. For arithmetic use milliunits.
50/// # Examples
51///
52/// ```
53/// assert_eq!(rust_ynab::milliunits_to_amount(50000), 50.0);
54/// assert_eq!(rust_ynab::milliunits_to_amount(-1500), -1.5);
55/// ```
56pub fn milliunits_to_amount(milliunits: i64) -> f64 {
57    milliunits as f64 / 1000.0
58}