Skip to main content

rusty_cat/
lib.rs

1//! `rusty-cat` public SDK crate.
2//!
3//! This crate exposes high-level APIs to enqueue and control upload/download
4//! tasks with breakpoint resume support.
5//!
6//! For beginners, start from [`api`] or directly use [`meow_client::MeowClient`]
7//! and [`meow_config::MeowConfig`].
8//!
9//! # Quick example
10//!
11//! ```no_run
12//! use rusty_cat::api::{MeowClient, MeowConfig, UploadPounceBuilder};
13//!
14//! let config = MeowConfig::builder()
15//!     .max_upload_concurrency(2)
16//!     .max_download_concurrency(2)
17//!     .build()?;
18//! let client = MeowClient::new(config);
19//! let _task = UploadPounceBuilder::new("file.bin", "./file.bin", 1024 * 1024)
20//!     .with_url("https://example.com/upload")
21//!     .build();
22//! let _ = client;
23//! # Ok::<(), rusty_cat::api::MeowError>(())
24//! ```
25//!
26//! # Panic policy (enforced)
27//!
28//! Production SDK code must never panic: any fallible path returns
29//! `Result<_, error::MeowError>` and logs the failure at [`log::LogLevel::Error`]
30//! (see [`meow_error_log`]). The lint block below makes a panic-trigger in
31//! non-test code a compile-time error under `cargo clippy`, freezing this
32//! guarantee. Tests, doctests and examples are exempt.
33#![cfg_attr(
34    not(test),
35    deny(
36        clippy::unwrap_used,
37        clippy::expect_used,
38        clippy::panic,
39        clippy::todo,
40        clippy::unimplemented,
41        clippy::unreachable
42    )
43)]
44#[cfg(feature = "aliyun-oss-direct")]
45#[path = "aliyun-oss-direct/mod.rs"]
46pub mod aliyun_oss_direct;
47#[cfg(feature = "aliyun-oss-presigned")]
48#[path = "aliyun-oss-presigned/mod.rs"]
49pub mod aliyun_oss_presigned;
50pub mod api;
51#[cfg(feature = "azure-blob-direct")]
52#[path = "azure-blob-direct/mod.rs"]
53pub mod azure_blob_direct;
54#[cfg(feature = "azure-blob-sas")]
55#[path = "azure-blob-sas/mod.rs"]
56pub mod azure_blob_sas;
57pub mod chunk_outcome;
58pub(crate) mod dflt;
59pub mod direction;
60pub mod down_pounce_builder;
61mod download_trait;
62pub mod error;
63pub mod file_transfer_record;
64pub mod http_breakpoint;
65pub mod ids;
66pub(crate) mod inner;
67pub mod log;
68pub mod meow_client;
69pub mod meow_config;
70pub mod pounce_task;
71pub mod prepare_outcome;
72#[cfg(feature = "presigned")]
73pub mod presigned;
74pub mod transfer_executor_trait;
75pub mod transfer_snapshot;
76pub mod transfer_status;
77pub mod transfer_task;
78pub mod up_pounce_builder;
79pub(crate) mod upload_source;
80pub mod upload_trait;
81
82pub use api::*;