| Crates.io | rac-delta |
| lib.rs | rac-delta |
| version | 1.0.2 |
| created_at | 2025-12-08 12:23:35.679947+00 |
| updated_at | 2026-01-08 18:56:13.044709+00 |
| description | Storage agnostic delta patching implementation of rac-delta protocol for Rust. With streaming support and file reconstruction. |
| homepage | |
| repository | https://github.com/raccreative/rac-delta-rs |
| max_upload_size | |
| id | 1973429 |
| size | 436,198 |
rac-delta is an open delta-patching protocol made for sync builds of your apps, games, or anything you store in a folder!
This is the official SDK for Rust.
cargo add rac-delta
In order to use the rac-delta SDK, you will need to create a RacDeltaClient, the main entry point of the SDK and where all the rac-delta operations are invoked.
use rac_delta::{
BaseStorageConfig, RacDeltaClient, RacDeltaConfig, SSHCredentials, SSHStorageConfig,
StorageConfig,
};
let config = RacDeltaConfig {
chunk_size: 1024 * 1024,
max_concurrency: Some(6),
storage: StorageConfig::SSH(SSHStorageConfig {
base: BaseStorageConfig {
path_prefix: Some("/root/upload".to_string()),
},
host: "localhost".to_string(),
port: Some(2222),
credentials: SSHCredentials {
username: "root".to_string(),
password: Some("password".to_string()),
private_key: None,
},
}),
};
let client = RacDeltaClient::new(config);
And a example to perform a upload to the selected storage (SSH in this case)
let remote_index_to_use: Option<RDIndex> = None;
match client.pipelines.upload {
UploadPipelineBundle::Hash(pipeline) => {
pipeline
.execute(
Path::new("my/dir"),
remote_index_to_use,
Some(UploadOptions {
require_remote_index: Some(false),
force: Some(false),
ignore_patterns: None,
on_state_change: Some(std::sync::Arc::new(|state| {
println!("Upload state: {:?}", state);
})),
on_progress: Some(std::sync::Arc::new(|phase, progress, speed| {
println!(
"Phase: {:?}, progress: {:.1}%, speed: {}",
phase,
progress * 100.0,
speed
.map_or("unknown".to_string(), |s| format!("{:.1} bytes/s", s))
);
})),
}),
)
.await?;
}
UploadPipelineBundle::Url(_p) => {
// none for SSH
}
}
For all the details, check the full documentation.
Available in spanish too!
Contributions are welcome!
git checkout -b feature/new-feature).git commit -m 'Added new feature').git push origin feature/new-feature).This project is licensed under the MIT License.