Skip to content

robsdedude/neo4j-rust-driver

Repository files navigation

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
  • Session
    • Config
      • database
      • bookmarks
      • impersonated_user
      • fetch_size
      • session_auth
    • Auto Commit
    • Transaction
      • Config
        • Metadata
        • Timeout
      • Unmanaged
      • With Retry
  • 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

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.