# Hedera™ Rust SDK
> The SDK for interacting with Hedera Hashgraph: the official distributed
> consensus platform built using the Hashgraph consensus algorithm for fast,
> fair and secure transactions. Hedera enables and empowers developers to
> build an entirely new class of decentralized applications.
Maintained with ❤️ by LaunchBadge, Swirlds Labs, and the Hedera community
## Requirements
- [Rust](https://rustup.rs)
- [protoc](https://grpc.io/docs/protoc-installation)
Clone this repository and its submodules:
```bash
git clone --recursive https://github.com/hashgraph/hedera-sdk-rust.git
```
Update [`\protobufs`](https://github.com/hashgraph/hedera-protobufs) submodule to recent version (if necessary):
```bash
git submodule update --recursive --remote
```
To check dependencies validity, run the following command in the root directory:
```bash
cargo check
```
## API Docs
Check out the [Hedera Rust SDK API reference docs](http://docs.rs/hedera/latest/hedera/index.html).
## Community and Support
If you have any questions on the Hedera SDK or Hedera more generally, you can join our team and hundreds of other developers using Hedera in our community Discord:
### Examples
To the run an example, set an operator id and operator key in the `.env` file. By default, these run against testnet.
```bash
# Account that will pay query and transaction fees.
OPERATOR_ID=
# Default private key to use to sign for all transactions and queries.
OPERATOR_KEY=
```
Cargo Command:
```bash
cargo run --release --example
```
Create Account Example:
```bash
cargo run --release --example create_account
```
### Integration Tests
Before running the integration tests, an operator key, operator id, and a network name must be set in an `.env` file.
```bash
# Account that will pay query and transaction fees.
TEST_OPERATOR_ID=
# Default private key to use to sign for all transactions and queries.
TEST_OPERATOR_KEY=
# Network names: "localhost", "testnet", "previewnet", "mainnet".
TEST_NETWORK_NAME=
# Running on-chain tests if this value is set to 1.
TEST_RUN_NONFREE=
```
Run the tests using `cargo test`
#### Local Environment Testing
Hedera offers a way to run tests through your localhost using the `hedera-local-node` service.
For instructions on how to set up and run local node, follow the steps in the git repository:
Once the local node is running in Docker, use these environment variables in the `.env`.
```bash
# Account that will pay query and transaction fees.
TEST_OPERATOR_ID=0.0.2
# Default private key to use to sign for all transactions and queries.
TEST_OPERATOR_KEY=302e020100300506032b65700422042091132178e72057a1d7528025956fe39b0b847f200ab59b2fdd367017f3087137
# Network names: "localhost", "testnet", "previewnet", "mainnet".
TEST_NETWORK_NAME=localhost
# Running on-chain tests if this value is set to 1.
TEST_RUN_NONFREE=1
```
Lastly, run the tests using `cargo test`
## Contributing
Contributions are welcome. Please see the [contributing guide](https://github.com/hashgraph/.github/blob/main/CONTRIBUTING.md) to see how you can get involved.
## Code of Conduct
This project is governed by the [Contributor Covenant Code of Conduct](https://github.com/hashgraph/.github/blob/main/CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code of conduct. Please report unacceptable behavior to [oss@hedera.com](mailto:oss@hedera.com).
## License
[Apache License 2.0](LICENSE)