## 📝 About The Project
Fuel Streams Core is a library for building data streaming applications on the Fuel blockchain. It provides tools for efficient handling of real-time blockchain data, using NATS for scalable streaming and offering support for Fuel-specific data types.
> [!NOTE]
> This crate is specifically modeled for the Fuel Data Systems project, and is not intended for general use outside of the project.
## 🛠️ Installing
Add this dependency to your `Cargo.toml`:
```toml
[dependencies]
fuel-streams-core = "*"
```
## 🚀 Usage
Here's a simple example to get you started with Fuel Streams Core:
```rust,no_run
use fuel_streams_core::prelude::*;
use futures::StreamExt;
#[tokio::main]
async fn main() -> BoxedResult<()> {
// Connect to NATS server
let opts = NatsClientOpts::new("nats://localhost:4222");
let client = NatsClient::connect(&opts).await?;
// Create a stream for blocks
let stream = Stream::::new(&client).await;
// Subscribe to the stream
let wildcard = BlocksSubject::wildcard(None, None); // blocks.*.*
let mut subscription = stream.subscribe(&wildcard).await?;
// Process incoming blocks
while let Some(bytes) = subscription.next().await {
let block = Block::decode_raw(bytes.unwrap()).await;
dbg!(block);
}
Ok(())
}
```
## 🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
For more information on contributing, please see the [CONTRIBUTING.md](../../CONTRIBUTING.md) file in the root of the repository.
## 📜 License
This repo is licensed under the `Apache-2.0` license. See [`LICENSE`](../../LICENSE) for more information.