3 unstable releases
0.1.0 | May 3, 2024 |
---|---|
0.0.2 | Dec 24, 2023 |
0.0.1 | Dec 8, 2023 |
#2299 in Database interfaces
730KB
16K
SLoC
Neo4j Driver for Rust
Disclaimer:
- While I'm currently affiliated with Neo4j, this is my private hobby project. It's not an officially supported piece of software by Neo4j.
- This is a work in progress, and it's mostly developed in my spare time.
- This project is primarily meant for private studies. Yet, I decided to publish it as it might be useful for others as well.
MSRV
Currently, this crate's minimum supported Rust version is 1.70
.
A bump in MSRV is considered a minor breaking change.
Feature Progress
- (Well-Written) Docs and Examples
- Driver
- Config
-
user_agent
-
auth
- basic
- kerberos
- bearer
- custom
-
max_connection_pool_size
-
fetch_size
-
connection_timeout
-
connection_acquisition_timeout
-
resolver
-
max_connection_lifetime
- routing and direct connections
-
keep_alive
-
TLS
- mTLS for 2FA
-
-
.session
-
.supports_multi_db
-
.supports_session_auth
-
.execute_query
-
.verify_connectivity
-
.verify_authentication
-
.get_server_info
-
.is_encrypted
- Config
- Session
- Config
- database
- bookmarks
- impersonated_user
- fetch_size
- session_auth
- Auto Commit
- Transaction
- Config
- Metadata
- Timeout
- Unmanaged
- With Retry
- Config
- Config
- Result (
RecordStream
)-
.keys
-
.consume
(Summary)-
.server_info
-
.address
-
.server_agent
-
.protocol_version
-
-
.database
-
.query
,.parameters
(won't implement) -
.query_type
-
.plan
-
.profile
-
.notifications
-
.counters
-
.result_available_after
-
.result_consumed_after
-
-
.single
-
.into::<EagerResult>()
-
.closed
(not sure if needed?) - Record
- most basic functionality
- ergonomic way to access by key
-
- Bookmark Management
- Protocol Versions
- 4.4
- 5.0 (utc fix)
- 5.1 (re-auth)
- 5.2 (notification filtering)
- 5.3 (bolt agent)
- 5.4 (telemetry)
- Types
-
Null
-
Integer
-
Float
-
String
-
Boolean
-
Bytes
-
List
-
Map
-
Node
-
Relationship
-
Path
-
Spatial
(point) -
Temporal
(date, time, datetime, duration)
-
- Proper Unit Tests
- CI
- rustfmt
- clippy
- Unit Tests
- Public API SemVer Compatibility Tests (cargo-public-api)
- Exposed Dependency Types Check (cargo-check-external-types)
- TestKit
Note on async
Currently, there are no plans to add async support until a proper abstraction over multiple runtimes is available so that users can choose their preferred runtime. As it stands, the async ecosystem would either force this crate to dictate a runtime or do an ugly dance to support multiple runtimes. Even then, the supported runtimes would be limited to the ones chosen by this crate.
Dependencies
~11–20MB
~370K SLoC