# rust-nebula
`rust-nebula` is a Rust client for developers to connect to NebulaGraph. `rust-nebula` only supports NebulaGraph which uses V3 protocol now.
## What we can achieve
NebulaGraph is composed of three services: Graph service, Meta service, and Storage service, which is an architecture that separates storage and computing.
Refer to [nebula-go](https://github.com/vesoft-inc/nebula-go) and [nebula-python](https://github.com/vesoft-inc/nebula-python), we have implemented Graph Client, Meta Client and Storage Client:
* Graph Client: It supports all nGQL query. For most users, they only need this client to finish jobs.
* Meta Client: It's used to obtain some storaged info so that Storage Client can do `scan` op.
* Storage Client: It could scan existed vertex and edge, and generally, it's prepared for large-scale data science engineering and data migration in the intranet.
## Examples
It has some examples in [examples](examples/).
## Todo
This repo is under construction. Welcome everyone to actively participate in improving the rust client and achieving more functions!
- [ ] Make value wrapper provide comprehensive support for all data types in NebualGraph.
- [ ] Robust error handling mechanism for value wrapper.
- [ ] A good session pool for Graph Client, perhaps Storage Client and Meta Client could also use it
- [ ] More commonly used instructions encapsulation for Graph Client, such as create tag/vertex, show tag/vertex etc.
- [ ] Iterator for GraphQueryOutput and StorageQueryOutput.
- [ ] Stream for StorageScanOutput.
- [ ] More unit tests and code comments.
## Reference
Part of the code in this project refers to the [bk-rs/nebula-rs](https://github.com/bk-rs/nebula-rs) and [vesoft-inc/nebula-rust](https://github.com/vesoft-inc/nebula-rust) project. Thank you for the authors' open source contribution.