From 3f62c7e2ff8ecae2fc429feb2c2650e76c1e65f9 Mon Sep 17 00:00:00 2001 From: Paul Horn Date: Tue, 11 Nov 2025 17:22:54 +0100 Subject: [PATCH 1/9] Add macro to include just a segment of a file --- Cargo.toml | 6 +----- include_snippet/Cargo.toml | 12 +++++++++++ include_snippet/src/lib.rs | 41 ++++++++++++++++++++++++++++++++++++++ lib/Cargo.toml | 3 ++- lib/src/lib.rs | 1 + 5 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 include_snippet/Cargo.toml create mode 100644 include_snippet/src/lib.rs diff --git a/Cargo.toml b/Cargo.toml index a313e1d3..1f31fa40 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,8 +1,4 @@ [workspace] resolver = "2" -members = [ - "lib", - "macros", - "xtask", -] +members = ["lib", "macros", "include_snippet", "xtask"] diff --git a/include_snippet/Cargo.toml b/include_snippet/Cargo.toml new file mode 100644 index 00000000..ccabdef9 --- /dev/null +++ b/include_snippet/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "include_snippet" +version = "0.0.0" +edition = "2021" +description = "Internal proc macro for the include_snippet! macro" +publish = false + +[lib] +proc-macro = true + +[dependencies] +unsynn = { version = "0.2.1", default-features = false } diff --git a/include_snippet/src/lib.rs b/include_snippet/src/lib.rs new file mode 100644 index 00000000..22a55a06 --- /dev/null +++ b/include_snippet/src/lib.rs @@ -0,0 +1,41 @@ +use std::path::PathBuf; + +use unsynn::{Literal, LiteralString, Parser as _, ToTokens as _, TokenStream}; + +#[proc_macro] +pub fn include_snippet(input: proc_macro::TokenStream) -> proc_macro::TokenStream { + include_snippet_impl(input.into()).into() +} + +fn include_snippet_impl(input: TokenStream) -> TokenStream { + let mut it = input.into_token_iter(); + let literal = ::parser(&mut it).expect("Input must be a literal string"); + let file = literal.as_str(); + + let root = std::env::var_os("CARGO_MANIFEST_DIR").expect("No `CARGO_MANIFEST_DIR`"); + let file = PathBuf::from(root).join(file); + + let snippet = std::fs::read_to_string(&file) + .unwrap_or_else(|_| panic!("Could not read file: {}", file.display())); + let mut snippet = snippet.as_str(); + + let start_tag = "// snippet-start"; + let Some(start) = snippet.find(start_tag) else { + panic!("Could not find '{start_tag}' in the file"); + }; + snippet = &snippet[start..]; + let start = snippet.find('\n').expect("No new-line after snippet-start"); + snippet = &snippet[start + 1..]; + + let end_tag = "// snippet-end"; + let Some(end) = snippet.find(end_tag) else { + panic!("Could not find '{end_tag}' in the file"); + }; + snippet = &snippet[..end]; + let end = snippet.rfind('\n').expect("No new-line before snippet-end"); + snippet = &snippet[..end]; + + let snippet = Literal::string(snippet); + + unsynn::quote! { #snippet } +} diff --git a/lib/Cargo.toml b/lib/Cargo.toml index f9f33aa0..982255ae 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -33,6 +33,7 @@ bytes = { version = "1.5.0", features = ["serde"] } chrono-tz = "0.10.0" delegate = "0.13.0" futures = { version = "0.3.0" } +neo4rs_include_snippet = { path = "../include_snippet" } log = "0.4.0" nav-types = { version = "0.5.2", optional = true } neo4rs-macros = { version = "0.3.0", path = "../macros" } @@ -40,7 +41,7 @@ pastey = "0.1.0" pin-project-lite = "0.2.9" rustls-native-certs = "0.8.0" rustls-pemfile = "2.1.2" -serde = { version = "1.0.185", features = ["derive"] } # TODO: eliminate derive +serde = { version = "1.0.185", features = ["derive"] } # TODO: eliminate derive serde_json = { version = "1.0.0", optional = true } thiserror = "2.0.0" time = { version = "0.3.22", optional = true } diff --git a/lib/src/lib.rs b/lib/src/lib.rs index 1ee059b3..db416eae 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -539,6 +539,7 @@ pub use crate::types::{ }; pub use crate::version::Version; pub(crate) use messages::Success; +use neo4rs_include_snippet::include_snippet; use std::fmt::Display; #[derive(Debug, PartialEq, Clone, Copy)] From 0127a074ef319cdf28057f4833e20c8178e0aaf4 Mon Sep 17 00:00:00 2001 From: Paul Horn Date: Thu, 9 Oct 2025 14:58:20 +0200 Subject: [PATCH 2/9] Move integration tests into their own crate --- .github/workflows/checks.yml | 73 +++++-------------- .github/workflows/create-release-pr.yml | 2 +- include_snippet/Cargo.toml | 6 +- integrationtests/Cargo.toml | 51 +++++++++++++ integrationtests/tests/bookmarks.rs | 53 ++++++++++++++ .../tests/configurations.rs | 8 +- {lib => integrationtests}/tests/container.rs | 0 .../tests}/dates.rs | 12 ++- .../tests}/datetime_as_param.rs | 20 +++-- .../tests/duration_deserialization.rs | 0 .../tests}/durations.rs | 12 ++- .../tests}/example.rs | 22 +++++- .../tests/missing_properties.rs | 0 .../tests/node_property_parsing.rs | 0 .../tests}/nodes.rs | 12 ++- .../tests}/parse_datetime_from_result.rs | 12 ++- .../tests}/parse_time_from_result.rs | 17 ++++- .../tests}/path.rs | 12 ++- .../tests}/points.rs | 26 ++++++- .../tests}/raw_bytes.rs | 12 ++- .../tests}/relationships.rs | 12 ++- .../tests}/result_stream.rs | 14 +++- .../tests}/result_summary.rs | 41 +++++++++-- .../tests}/rollback_a_transaction.rs | 12 ++- .../tests}/streams_within_a_transaction.rs | 13 +++- .../tests}/time_as_param.rs | 12 ++- .../tests}/transactions.rs | 12 ++- .../tests/txn_change_db.rs | 0 .../tests}/txn_vs_graph.rs | 12 ++- .../tests}/unbounded_relationships.rs | 12 ++- .../tests/use_default_db.rs | 4 +- lib/Cargo.toml | 12 +-- lib/include/bookmarks.rs | 26 ------- lib/include/configurations.rs | 7 -- lib/src/lib.rs | 42 +++++------ lib/tests/bookmarks.rs | 12 --- lib/tests/dates.rs | 11 --- lib/tests/datetime_as_param.rs | 11 --- lib/tests/durations.rs | 11 --- lib/tests/example.rs | 11 --- lib/tests/nodes.rs | 11 --- lib/tests/parse_datetime_from_result.rs | 11 --- lib/tests/parse_time_from_result.rs | 11 --- lib/tests/path.rs | 11 --- lib/tests/points.rs | 25 ------- lib/tests/raw_bytes.rs | 11 --- lib/tests/relationships.rs | 11 --- lib/tests/result_stream.rs | 13 ---- lib/tests/result_summary.rs | 12 --- lib/tests/rollback_a_transaction.rs | 11 --- lib/tests/streams_within_a_transaction.rs | 12 --- lib/tests/time_as_param.rs | 11 --- lib/tests/transactions.rs | 11 --- lib/tests/txn_vs_graph.rs | 11 --- lib/tests/unbounded_relationships.rs | 11 --- 55 files changed, 423 insertions(+), 397 deletions(-) create mode 100644 integrationtests/Cargo.toml create mode 100644 integrationtests/tests/bookmarks.rs rename {lib => integrationtests}/tests/configurations.rs (50%) rename {lib => integrationtests}/tests/container.rs (100%) rename {lib/include => integrationtests/tests}/dates.rs (67%) rename {lib/include => integrationtests/tests}/datetime_as_param.rs (77%) rename {lib => integrationtests}/tests/duration_deserialization.rs (100%) rename {lib/include => integrationtests/tests}/durations.rs (68%) rename {lib/include => integrationtests/tests}/example.rs (62%) rename {lib => integrationtests}/tests/missing_properties.rs (100%) rename {lib => integrationtests}/tests/node_property_parsing.rs (100%) rename {lib/include => integrationtests/tests}/nodes.rs (85%) rename {lib/include => integrationtests/tests}/parse_datetime_from_result.rs (87%) rename {lib/include => integrationtests/tests}/parse_time_from_result.rs (75%) rename {lib/include => integrationtests/tests}/path.rs (79%) rename {lib/include => integrationtests/tests}/points.rs (62%) rename {lib/include => integrationtests/tests}/raw_bytes.rs (64%) rename {lib/include => integrationtests/tests}/relationships.rs (73%) rename {lib/include => integrationtests/tests}/result_stream.rs (80%) rename {lib/include => integrationtests/tests}/result_summary.rs (56%) rename {lib/include => integrationtests/tests}/rollback_a_transaction.rs (72%) rename {lib/include => integrationtests/tests}/streams_within_a_transaction.rs (78%) rename {lib/include => integrationtests/tests}/time_as_param.rs (83%) rename {lib/include => integrationtests/tests}/transactions.rs (77%) rename {lib => integrationtests}/tests/txn_change_db.rs (100%) rename {lib/include => integrationtests/tests}/txn_vs_graph.rs (83%) rename {lib/include => integrationtests/tests}/unbounded_relationships.rs (87%) rename {lib => integrationtests}/tests/use_default_db.rs (96%) delete mode 100644 lib/include/bookmarks.rs delete mode 100644 lib/include/configurations.rs delete mode 100644 lib/tests/bookmarks.rs delete mode 100644 lib/tests/dates.rs delete mode 100644 lib/tests/datetime_as_param.rs delete mode 100644 lib/tests/durations.rs delete mode 100644 lib/tests/example.rs delete mode 100644 lib/tests/nodes.rs delete mode 100644 lib/tests/parse_datetime_from_result.rs delete mode 100644 lib/tests/parse_time_from_result.rs delete mode 100644 lib/tests/path.rs delete mode 100644 lib/tests/points.rs delete mode 100644 lib/tests/raw_bytes.rs delete mode 100644 lib/tests/relationships.rs delete mode 100644 lib/tests/result_stream.rs delete mode 100644 lib/tests/result_summary.rs delete mode 100644 lib/tests/rollback_a_transaction.rs delete mode 100644 lib/tests/streams_within_a_transaction.rs delete mode 100644 lib/tests/time_as_param.rs delete mode 100644 lib/tests/transactions.rs delete mode 100644 lib/tests/txn_vs_graph.rs delete mode 100644 lib/tests/unbounded_relationships.rs diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 313b3754..39968af4 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -27,40 +27,13 @@ env: HACK: hack --package neo4rs --each-feature --exclude-features unstable-serde-packstream-format,unstable-bolt-protocol-impl-v2,unstable-result-summary jobs: - check: - name: Compile on MSRV - runs-on: ubuntu-latest - steps: - - - name: Checkout code - uses: actions/checkout@v4 - with: - fetch-depth: 2 - - - name: Set up Rust - uses: dtolnay/rust-toolchain@master - with: - toolchain: ${{ env.MSRV }} - - - name: Set up Rust cache - uses: Swatinem/rust-cache@v2 - - - name: Install cargo-hack - uses: taiki-e/install-action@cargo-hack - - - name: Prepare MSRV lockfile - run: cp ci/Cargo.lock.msrv Cargo.lock - - - name: Run cargo check - run: cargo +$MSRV --locked ${{ env.HACK }} check - fmt: name: Check formatting runs-on: ubuntu-latest steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 2 @@ -82,7 +55,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 2 @@ -114,14 +87,14 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 2 - name: Set up Rust uses: dtolnay/rust-toolchain@master with: - toolchain: stable + toolchain: ${{ env.MSRV }} - name: Set up Rust cache uses: Swatinem/rust-cache@v2 @@ -132,8 +105,11 @@ jobs: - name: Install cargo-nextest uses: taiki-e/install-action@nextest + - name: Prepare MSRV lockfile + run: cp ci/Cargo.lock.msrv Cargo.lock + - name: Run unit tests - run: cargo ${{ env.HACK }} nextest run --lib + run: cargo +$MSRV --locked ${{ env.HACK }} nextest run --lib integration-tests: name: Run integration tests @@ -158,14 +134,14 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 2 - name: Set up Rust uses: dtolnay/rust-toolchain@master with: - toolchain: ${{ env.MSRV }} + toolchain: stable - name: Set up Rust cache uses: Swatinem/rust-cache@v2 @@ -176,22 +152,11 @@ jobs: - name: Install cargo-nextest uses: taiki-e/install-action@nextest - - name: Prepare MSRV lockfile - run: cp ci/Cargo.lock.msrv Cargo.lock - - name: Run integration tests - run: cargo +$MSRV --locked ${{ env.HACK }} nextest run -E 'kind(test)' + run: cargo {{ env.HACK }} nextest run -E 'kind(test)' - msrv: - name: Validate MSRV and minimal dependency versions - strategy: - fail-fast: false - matrix: - include: - - file: Cargo.lock.msrv - name: MSRV - - file: Cargo.lock.min - name: minimal dependency versions + min_dep: + name: Validate minimal dependency versions runs-on: ubuntu-latest steps: @@ -203,21 +168,21 @@ jobs: with: toolchain: ${{ env.MSRV }} - - name: Prepare ${{ matrix.name }} lockfile - run: cp ci/${{ matrix.file }} Cargo.lock - - name: Set up Rust cache uses: Swatinem/rust-cache@v2 - name: Install cargo-nextest uses: taiki-e/install-action@nextest - - name: Run ${{ matrix.name }} unit tests - run: cargo +$MSRV nextest run --lib --all-features --locked + - name: Prepare minimal dependency versions lockfile + run: cp ci/Cargo.lock.min Cargo.lock + + - name: Run minimal dependency versions unit tests + run: cargo +$MSRV nextest --package neo4rs run --lib --all-features --locked release: name: Release - needs: [ check, fmt, clippy, unit-tests, integration-tests, msrv ] + needs: [ fmt, clippy, unit-tests, integration-tests, min_dep ] if: startsWith(github.ref, 'refs/tags/') runs-on: ubuntu-latest steps: diff --git a/.github/workflows/create-release-pr.yml b/.github/workflows/create-release-pr.yml index 327aa602..1552a151 100644 --- a/.github/workflows/create-release-pr.yml +++ b/.github/workflows/create-release-pr.yml @@ -32,7 +32,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v5 with: fetch-depth: 2 diff --git a/include_snippet/Cargo.toml b/include_snippet/Cargo.toml index ccabdef9..2140e3f4 100644 --- a/include_snippet/Cargo.toml +++ b/include_snippet/Cargo.toml @@ -1,9 +1,9 @@ [package] -name = "include_snippet" -version = "0.0.0" +name = "neo4rs_include_snippet" +version = "0.9.0-rc.8" edition = "2021" description = "Internal proc macro for the include_snippet! macro" -publish = false +publish = true [lib] proc-macro = true diff --git a/integrationtests/Cargo.toml b/integrationtests/Cargo.toml new file mode 100644 index 00000000..dfd097a1 --- /dev/null +++ b/integrationtests/Cargo.toml @@ -0,0 +1,51 @@ +[package] +name = "neo4rs_tests" +version = "0.0.0" +edition = "2024" +description = "Rust driver for Neo4j" +license = "MIT" +repository = "https://github.com/neo4j-labs/neo4rs" +documentation = "https://docs.rs/neo4rs" +readme = "../README.md" +publish = false + +[workspace] + +[features] +json = ["neo4rs/json"] +uuid = ["neo4rs/uuid"] +unstable-v1 = ["neo4rs/unstable-v1"] +unstable-serde-packstream-format = ["neo4rs/unstable-serde-packstream-format"] +unstable-result-summary = ["neo4rs/unstable-result-summary"] +unstable-bolt-protocol-impl-v2 = ["neo4rs/unstable-bolt-protocol-impl-v2"] + +[dependencies] +neo4rs = { version = "0.9.0-rc.8", path = "../lib" } + +[dev-dependencies] +futures = { version = "0.3.0" } +pretty_env_logger = "0.5.0" +serde = { version = "1.0.185" } +uuid = { version = "1.0.0", features = ["v4"] } + +[dev-dependencies.chrono] +version = "0.4.35" +default-features = false +features = ["std", "serde"] + +[dev-dependencies.lenient_semver] +version = "0.4.2" +default-features = false +features = ["version_lite"] + +[dev-dependencies.testcontainers] +version = "0.25.2" +features = ["blocking"] + +[dev-dependencies.testcontainers-modules] +version = "0.13.0" +features = ["neo4j"] + +[dependencies.tokio] +version = "1.5.0" +features = ["full"] diff --git a/integrationtests/tests/bookmarks.rs b/integrationtests/tests/bookmarks.rs new file mode 100644 index 00000000..3d59f7e2 --- /dev/null +++ b/integrationtests/tests/bookmarks.rs @@ -0,0 +1,53 @@ +#![cfg(feature = "unstable-bolt-protocol-impl-v2")] +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn transactions() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start + let mut txn = graph + .start_txn() + .await + .expect("Failed to start a new transaction"); + let id = uuid::Uuid::new_v4().to_string(); + txn.run(query("CREATE (p:Person {id: $id})").param("id", id.clone())) + .await + .unwrap(); + txn.run(query("CREATE (p:Person {id: $id})").param("id", id.clone())) + .await + .unwrap(); + // graph.execute(..) will not see the changes done above as the txn is not committed yet + let mut result = graph + .execute(query("MATCH (p:Person) WHERE p.id = $id RETURN p.id").param("id", id.clone())) + .await + .unwrap(); + assert!(result.next().await.unwrap().is_none()); + let bookmark = txn.commit().await.unwrap(); + assert!(bookmark.is_some()); + if let Some(ref b) = bookmark { + println!("Got a bookmark after commit: {:?}", b); + } + + //changes are now seen as the transaction is committed. + let mut txn = graph + .start_txn_as(Operation::Read, bookmark.map(|b| vec![b])) + .await + .expect("Failed to start a new transaction"); + let mut stream = txn + .execute(query("MATCH (p:Person) WHERE p.id = $id RETURN p.id").param("id", id.clone())) + .await + .unwrap(); + loop { + let next = stream.next(txn.handle()); + if let Ok(Some(record)) = next.await { + println!("Record: {:?}", record); + } else { + break; + } + } + // snippet-end +} diff --git a/lib/tests/configurations.rs b/integrationtests/tests/configurations.rs similarity index 50% rename from lib/tests/configurations.rs rename to integrationtests/tests/configurations.rs index 585eaaa4..5bf0e121 100644 --- a/lib/tests/configurations.rs +++ b/integrationtests/tests/configurations.rs @@ -11,5 +11,11 @@ async fn configurations() { let neo4j = container::Neo4jContainer::from_config(config).await; let graph = neo4j.graph(); - include!("../include/configurations.rs"); + // snippet-start + let mut result = graph.execute(query("RETURN 1")).await.unwrap(); + let row = result.next().await.unwrap().unwrap(); + let value: i64 = row.get("1").unwrap(); + assert_eq!(1, value); + assert!(result.next().await.unwrap().is_none()); + // snippet-end } diff --git a/lib/tests/container.rs b/integrationtests/tests/container.rs similarity index 100% rename from lib/tests/container.rs rename to integrationtests/tests/container.rs diff --git a/lib/include/dates.rs b/integrationtests/tests/dates.rs similarity index 67% rename from lib/include/dates.rs rename to integrationtests/tests/dates.rs index c5d5ea59..1b6232be 100644 --- a/lib/include/dates.rs +++ b/integrationtests/tests/dates.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn dates() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start let date = chrono::NaiveDate::from_ymd_opt(1985, 2, 5).unwrap(); let mut result = graph .execute(query("RETURN $d as output").param("d", date)) @@ -8,4 +17,5 @@ let d: chrono::NaiveDate = row.get("output").unwrap(); assert_eq!(d.to_string(), "1985-02-05"); assert!(result.next().await.unwrap().is_none()); + // snippet-end } diff --git a/lib/include/datetime_as_param.rs b/integrationtests/tests/datetime_as_param.rs similarity index 77% rename from lib/include/datetime_as_param.rs rename to integrationtests/tests/datetime_as_param.rs index 9f01d05e..de2aa490 100644 --- a/lib/include/datetime_as_param.rs +++ b/integrationtests/tests/datetime_as_param.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn datetime_as_param() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start //send datetime as parameter in the query let datetime = chrono::DateTime::parse_from_rfc2822("Tue, 01 Jul 2003 10:52:37 +0200").unwrap(); @@ -13,8 +22,8 @@ //send NaiveDateTime as parameter in the query let localdatetime = - chrono::NaiveDateTime::parse_from_str("2015-07-01 08:55:59.123", "%Y-%m-%d %H:%M:%S%.f") - .unwrap(); + chrono::NaiveDateTime::parse_from_str("2015-07-01 08:55:59.123", "%Y-%m-%d %H:%M:%S%.f") + .unwrap(); let mut result = graph .execute(query("RETURN $d as output").param("d", localdatetime)) @@ -27,8 +36,8 @@ //send NaiveDateTime with timezone id as parameter in the query let datetime = - chrono::NaiveDateTime::parse_from_str("2015-07-03 08:55:59.555", "%Y-%m-%d %H:%M:%S%.f") - .unwrap(); + chrono::NaiveDateTime::parse_from_str("2015-07-03 08:55:59.555", "%Y-%m-%d %H:%M:%S%.f") + .unwrap(); let timezone = "Europe/Paris"; let mut result = graph @@ -40,4 +49,5 @@ assert_eq!(time.to_string(), "2015-07-03 08:55:59.555"); assert_eq!(zone, "Europe/Paris"); assert!(result.next().await.unwrap().is_none()); + // snippet-end } diff --git a/lib/tests/duration_deserialization.rs b/integrationtests/tests/duration_deserialization.rs similarity index 100% rename from lib/tests/duration_deserialization.rs rename to integrationtests/tests/duration_deserialization.rs diff --git a/lib/include/durations.rs b/integrationtests/tests/durations.rs similarity index 68% rename from lib/include/durations.rs rename to integrationtests/tests/durations.rs index 27e5fbb1..25a239c7 100644 --- a/lib/include/durations.rs +++ b/integrationtests/tests/durations.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn durations() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start let duration = std::time::Duration::new(5259600, 7); let mut result = graph .execute(query("RETURN $d as output").param("d", duration)) @@ -9,4 +18,5 @@ assert_eq!(d.as_secs(), 5259600); assert_eq!(d.subsec_nanos(), 7); assert!(result.next().await.unwrap().is_none()); + // snippet-end } diff --git a/lib/include/example.rs b/integrationtests/tests/example.rs similarity index 62% rename from lib/include/example.rs rename to integrationtests/tests/example.rs index ec1b31a1..4b187a49 100644 --- a/lib/include/example.rs +++ b/integrationtests/tests/example.rs @@ -1,4 +1,17 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn basic_example() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start + use std::sync::{ + atomic::{AtomicU32, Ordering}, + Arc, + }; let id = uuid::Uuid::new_v4().to_string(); graph .run(query("CREATE (p:Person {id: $id})").param("id", id.clone())) @@ -6,7 +19,7 @@ .unwrap(); let mut handles = Vec::new(); - let count = std::sync::Arc::new(std::sync::atomic::AtomicU32::new(0)); + let count = Arc::new(AtomicU32::new(0)); for _ in 1..=42 { let graph = graph.clone(); let id = id.clone(); @@ -17,12 +30,13 @@ .await .unwrap(); while let Ok(Some(_row)) = result.next().await { - count.fetch_add(1, std::sync::atomic::Ordering::Relaxed); + count.fetch_add(1, Ordering::Relaxed); } }); handles.push(handle); } futures::future::join_all(handles).await; - assert_eq!(count.load(std::sync::atomic::Ordering::Relaxed), 42); + assert_eq!(count.load(Ordering::Relaxed), 42); + // snippet-end } diff --git a/lib/tests/missing_properties.rs b/integrationtests/tests/missing_properties.rs similarity index 100% rename from lib/tests/missing_properties.rs rename to integrationtests/tests/missing_properties.rs diff --git a/lib/tests/node_property_parsing.rs b/integrationtests/tests/node_property_parsing.rs similarity index 100% rename from lib/tests/node_property_parsing.rs rename to integrationtests/tests/node_property_parsing.rs diff --git a/lib/include/nodes.rs b/integrationtests/tests/nodes.rs similarity index 85% rename from lib/include/nodes.rs rename to integrationtests/tests/nodes.rs index 4b98d2dc..5d019e02 100644 --- a/lib/include/nodes.rs +++ b/integrationtests/tests/nodes.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn nodes() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start // run a query to ensure the connection is alive let result = graph.run(query("RETURN 1")).await; assert!(result.is_ok(), "Query failed: {:?}", result); @@ -31,4 +40,5 @@ assert_eq!(node.keys(), vec!["name"]); assert!(node.id() >= 0); } + // snippet-end } diff --git a/lib/include/parse_datetime_from_result.rs b/integrationtests/tests/parse_datetime_from_result.rs similarity index 87% rename from lib/include/parse_datetime_from_result.rs rename to integrationtests/tests/parse_datetime_from_result.rs index cee3a78c..b3876186 100644 --- a/lib/include/parse_datetime_from_result.rs +++ b/integrationtests/tests/parse_datetime_from_result.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn parse_datetime_from_result() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start //Parse NaiveDateTime from result let mut result = graph .execute(query( @@ -35,4 +44,5 @@ assert_eq!(datetime.to_string(), "1984-11-11 12:31:14.645876123"); assert_eq!(zone_id, "Europe/Stockholm"); assert!(result.next().await.unwrap().is_none()); + // snippet-end } diff --git a/lib/include/parse_time_from_result.rs b/integrationtests/tests/parse_time_from_result.rs similarity index 75% rename from lib/include/parse_time_from_result.rs rename to integrationtests/tests/parse_time_from_result.rs index a5c9932b..6ccf8c5f 100644 --- a/lib/include/parse_time_from_result.rs +++ b/integrationtests/tests/parse_time_from_result.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn parse_time_from_result() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start //Parse time without offset let mut result = graph .execute(query( @@ -22,6 +31,10 @@ let row = result.next().await.unwrap().unwrap(); let t: (chrono::NaiveTime, Option) = row.get("t").unwrap(); assert_eq!(t.0.to_string(), "10:15:33.000000200"); - assert_eq!(t.1, Some(Offset(chrono::FixedOffset::east_opt(3600).unwrap()))); + assert_eq!( + t.1, + Some(Offset(chrono::FixedOffset::east_opt(3600).unwrap())) + ); assert!(result.next().await.unwrap().is_none()); + // snippet-end } diff --git a/lib/include/path.rs b/integrationtests/tests/path.rs similarity index 79% rename from lib/include/path.rs rename to integrationtests/tests/path.rs index cc834d89..f6c54361 100644 --- a/lib/include/path.rs +++ b/integrationtests/tests/path.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +pub async fn path() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start let name = uuid::Uuid::new_v4().to_string(); graph .run( @@ -22,4 +31,5 @@ assert_eq!(path.nodes().len(), 2); assert_eq!(path.rels().len(), 1); assert!(result.next().await.unwrap().is_none()); + // snippet-end } diff --git a/lib/include/points.rs b/integrationtests/tests/points.rs similarity index 62% rename from lib/include/points.rs rename to integrationtests/tests/points.rs index 7d21c269..1db5ef9a 100644 --- a/lib/include/points.rs +++ b/integrationtests/tests/points.rs @@ -1,4 +1,27 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn points() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + let distance = if neo4j.version().major >= 5 { + "point.distance(p1,p2)" + } else { + "distance(p1,p2)" + }; + + let qry = format!( + "WITH point({{ x: 2.3, y: 4.5, crs: 'cartesian' }}) AS p1, + point({{ x: 1.1, y: 5.4, crs: 'cartesian' }}) AS p2 + RETURN {distance} AS dist, p1, p2", + distance = distance + ); + let qry = &qry; + + // snippet-start let mut result = graph.execute(query(qry)).await.unwrap(); let row = result.next().await.unwrap().unwrap(); let dist: f64 = row.get("dist").unwrap(); @@ -26,4 +49,5 @@ assert_eq!(point.y(), 12.78); assert_eq!(point.z(), 8.0); assert!(result.next().await.unwrap().is_none()); + // snippet-end } diff --git a/lib/include/raw_bytes.rs b/integrationtests/tests/raw_bytes.rs similarity index 64% rename from lib/include/raw_bytes.rs rename to integrationtests/tests/raw_bytes.rs index 60a3d59d..f4d414db 100644 --- a/lib/include/raw_bytes.rs +++ b/integrationtests/tests/raw_bytes.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn raw_bytes() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start let bytes = b"Hello, Neo4j!"; let mut result = graph .execute(query("RETURN $b as output").param("b", bytes.as_ref())) @@ -8,4 +17,5 @@ let b: Vec = row.get("output").unwrap(); assert_eq!(b, bytes); assert!(result.next().await.unwrap().is_none()); + // snippet-end } diff --git a/lib/include/relationships.rs b/integrationtests/tests/relationships.rs similarity index 73% rename from lib/include/relationships.rs rename to integrationtests/tests/relationships.rs index 91f981df..f92c43e2 100644 --- a/lib/include/relationships.rs +++ b/integrationtests/tests/relationships.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn relationships() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start let mut result = graph.execute( query("CREATE (p:Person { name: 'Oliver Stone' })-[r:WORKS_AT {as: 'Engineer'}]->(neo) RETURN r") ).await.unwrap(); @@ -11,4 +20,5 @@ assert_eq!(relation.typ(), "WORKS_AT"); assert_eq!(relation.keys(), vec!["as"]); assert_eq!(relation.get::("as").unwrap(), "Engineer"); + // snippet-end } diff --git a/lib/include/result_stream.rs b/integrationtests/tests/result_stream.rs similarity index 80% rename from lib/include/result_stream.rs rename to integrationtests/tests/result_stream.rs index eb4c95d3..f6363ffb 100644 --- a/lib/include/result_stream.rs +++ b/integrationtests/tests/result_stream.rs @@ -1,4 +1,15 @@ -{ +use neo4rs::*; + +mod container; + +// The purpose of the test is to not use a `must_use` +#[allow(unused_must_use)] +#[tokio::test] +async fn result_stream() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start let before = graph .execute(query("MATCH (n:MyNode) RETURN COUNT(n) AS n")) .await @@ -44,4 +55,5 @@ .unwrap(); assert_eq!(after, before + 2); + // snippet-end } diff --git a/lib/include/result_summary.rs b/integrationtests/tests/result_summary.rs similarity index 56% rename from lib/include/result_summary.rs rename to integrationtests/tests/result_summary.rs index 69010997..003566dc 100644 --- a/lib/include/result_summary.rs +++ b/integrationtests/tests/result_summary.rs @@ -1,7 +1,17 @@ -{ +#![cfg(feature = "unstable-result-summary")] +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn streaming_summary() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start use ::futures::TryStreamExt as _; - use neo4rs::summary::{Type, Counters, ResultSummary}; + use neo4rs::summary::{Counters, ResultSummary, Type}; #[allow(dead_code)] #[derive(Debug, PartialEq, serde::Deserialize)] @@ -18,7 +28,15 @@ assert!(summary.consumed_after().is_some()); assert!(summary.db().is_some()); assert_eq!(summary.query_type(), Type::ReadWrite); - assert_eq!(summary.stats(), &Counters { nodes_created: 1, properties_set: 1, labels_added: 1, ..Default::default()}); + assert_eq!( + summary.stats(), + &Counters { + nodes_created: 1, + properties_set: 1, + labels_added: 1, + ..Default::default() + } + ); } // @@ -29,13 +47,16 @@ .await .unwrap(); - let Ok(Some(row)) = stream.next().await else { panic!() }; + let Ok(Some(row)) = stream.next().await else { + panic!() + }; assert_item(row.to().unwrap()); - let Ok(summary) = stream.finish().await else { panic!() }; + let Ok(summary) = stream.finish().await else { + panic!() + }; assert_summary(&summary); - // // into_stream + finish @@ -44,16 +65,20 @@ .await .unwrap(); - let items = stream.into_stream_as::() + let items = stream + .into_stream_as::() .try_collect::>() .await .unwrap(); - let Ok(summary) = stream.finish().await else { panic!() }; + let Ok(summary) = stream.finish().await else { + panic!() + }; for item in items { assert_item(item); } assert_summary(&summary); + // snippet-end } diff --git a/lib/include/rollback_a_transaction.rs b/integrationtests/tests/rollback_a_transaction.rs similarity index 72% rename from lib/include/rollback_a_transaction.rs rename to integrationtests/tests/rollback_a_transaction.rs index ec3ff351..a7cef221 100644 --- a/lib/include/rollback_a_transaction.rs +++ b/integrationtests/tests/rollback_a_transaction.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn rollback_a_transaction() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start let mut txn = graph.start_txn().await.unwrap(); let id = uuid::Uuid::new_v4().to_string(); // create a node @@ -14,4 +23,5 @@ .await .unwrap(); assert!(result.next().await.unwrap().is_none()); + // snippet-end } diff --git a/lib/include/streams_within_a_transaction.rs b/integrationtests/tests/streams_within_a_transaction.rs similarity index 78% rename from lib/include/streams_within_a_transaction.rs rename to integrationtests/tests/streams_within_a_transaction.rs index df8cbcf2..399e639f 100644 --- a/lib/include/streams_within_a_transaction.rs +++ b/integrationtests/tests/streams_within_a_transaction.rs @@ -1,4 +1,14 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn streams_within_a_transaction() { + let config = ConfigBuilder::default().fetch_size(1); + let neo4j = container::Neo4jContainer::from_config(config).await; + let graph = neo4j.graph(); + + // snippet-start let qry = "UNWIND [1, 2] AS x RETURN x"; let mut txn = graph.start_txn().await.unwrap(); @@ -29,4 +39,5 @@ // commit the transaction txn.commit().await.unwrap(); + // snippet-end } diff --git a/lib/include/time_as_param.rs b/integrationtests/tests/time_as_param.rs similarity index 83% rename from lib/include/time_as_param.rs rename to integrationtests/tests/time_as_param.rs index 0526c76e..6ae45939 100644 --- a/lib/include/time_as_param.rs +++ b/integrationtests/tests/time_as_param.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +pub(crate) async fn time_as_param() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start //send time without offset as param let time = chrono::NaiveTime::from_hms_nano_opt(11, 15, 30, 200).unwrap(); let mut result = graph @@ -23,4 +32,5 @@ assert_eq!(t.0.to_string(), "11:15:30.000000200"); assert_eq!(t.1, Some(Offset(offset))); assert!(result.next().await.unwrap().is_none()); + // snippet-end } diff --git a/lib/include/transactions.rs b/integrationtests/tests/transactions.rs similarity index 77% rename from lib/include/transactions.rs rename to integrationtests/tests/transactions.rs index d9393d8f..b71ac05e 100644 --- a/lib/include/transactions.rs +++ b/integrationtests/tests/transactions.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn transactions() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start let mut txn = graph.start_txn().await.unwrap(); let id = uuid::Uuid::new_v4().to_string(); let result = txn @@ -17,4 +26,5 @@ assert!(result.next().await.unwrap().is_some()); assert!(result.next().await.unwrap().is_some()); assert!(result.next().await.unwrap().is_none()); + // snippet-end } diff --git a/lib/tests/txn_change_db.rs b/integrationtests/tests/txn_change_db.rs similarity index 100% rename from lib/tests/txn_change_db.rs rename to integrationtests/tests/txn_change_db.rs diff --git a/lib/include/txn_vs_graph.rs b/integrationtests/tests/txn_vs_graph.rs similarity index 83% rename from lib/include/txn_vs_graph.rs rename to integrationtests/tests/txn_vs_graph.rs index 751830a1..613a7f8b 100644 --- a/lib/include/txn_vs_graph.rs +++ b/integrationtests/tests/txn_vs_graph.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn txn_vs_graph() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start let mut txn = graph.start_txn().await.unwrap(); let id = uuid::Uuid::new_v4().to_string(); txn.run(query("CREATE (p:Person {id: $id})").param("id", id.clone())) @@ -23,4 +32,5 @@ assert!(result.next().await.unwrap().is_some()); assert!(result.next().await.unwrap().is_some()); assert!(result.next().await.unwrap().is_none()); + // snippet-end } diff --git a/lib/include/unbounded_relationships.rs b/integrationtests/tests/unbounded_relationships.rs similarity index 87% rename from lib/include/unbounded_relationships.rs rename to integrationtests/tests/unbounded_relationships.rs index 2e4e4744..524a0f8f 100644 --- a/lib/include/unbounded_relationships.rs +++ b/integrationtests/tests/unbounded_relationships.rs @@ -1,4 +1,13 @@ -{ +use neo4rs::*; + +mod container; + +#[tokio::test] +async fn unbounded_relationships() { + let neo4j = container::Neo4jContainer::new().await; + let graph = neo4j.graph(); + + // snippet-start let mut result = graph.execute( query("MERGE (p1:Person { name: 'Oliver Stone' })-[r:RELATED {as: 'friend'}]-(p2: Person {name: 'Mark'}) RETURN r") ).await.unwrap(); @@ -39,4 +48,5 @@ assert_eq!(relation.typ(), "RELATED"); assert_eq!(relation.keys(), vec!["as"]); assert_eq!(relation.get::("as").unwrap(), "friend"); + // snippet-end } diff --git a/lib/tests/use_default_db.rs b/integrationtests/tests/use_default_db.rs similarity index 96% rename from lib/tests/use_default_db.rs rename to integrationtests/tests/use_default_db.rs index 5a24076b..6351b4b9 100644 --- a/lib/tests/use_default_db.rs +++ b/integrationtests/tests/use_default_db.rs @@ -1,5 +1,7 @@ use futures::TryStreamExt; -use neo4rs::{query, Operation}; +use neo4rs::query; +#[cfg(feature = "unstable-bolt-protocol-impl-v2")] +use neo4rs::Operation; mod container; diff --git a/lib/Cargo.toml b/lib/Cargo.toml index 982255ae..da847bda 100644 --- a/lib/Cargo.toml +++ b/lib/Cargo.toml @@ -13,7 +13,7 @@ documentation = "https://docs.rs/neo4rs" readme = "../README.md" keywords = ["neo4j", "driver", "bolt", "cypher", "tokio"] categories = ["database", "network-programming", "asynchronous"] -rust-version = "1.81.0" +rust-version = "1.85" [features] json = ["serde_json"] @@ -33,9 +33,9 @@ bytes = { version = "1.5.0", features = ["serde"] } chrono-tz = "0.10.0" delegate = "0.13.0" futures = { version = "0.3.0" } -neo4rs_include_snippet = { path = "../include_snippet" } log = "0.4.0" nav-types = { version = "0.5.2", optional = true } +neo4rs_include_snippet = { path = "../include_snippet" } neo4rs-macros = { version = "0.3.0", path = "../macros" } pastey = "0.1.0" pin-project-lite = "0.2.9" @@ -79,19 +79,11 @@ features = ["tls12", "ring"] [dev-dependencies] pretty_env_logger = "0.5.0" -serde = { version = "1.0.185", features = ["derive"] } serde_bytes = "0.11.0" serde_json = "1.0.0" serde_test = "1.0.176" serde_with = "3.0.0" tap = "1.0.1" test-case = "3.3.1" -testcontainers = { version = "0.23.0", features = ["blocking"] } -testcontainers-modules = { version = "0.11.0", features = ["neo4j"] } time = { version = "0.3.0", features = ["serde"] } uuid = { version = "1.0.0", features = ["v4"] } - -[dev-dependencies.lenient_semver] -version = "0.4.2" -default-features = false -features = ["version_lite"] diff --git a/lib/include/bookmarks.rs b/lib/include/bookmarks.rs deleted file mode 100644 index 99899900..00000000 --- a/lib/include/bookmarks.rs +++ /dev/null @@ -1,26 +0,0 @@ -{ - let mut txn = graph.start_txn().await.expect("Failed to start a new transaction"); - let id = uuid::Uuid::new_v4().to_string(); - txn.run(query("CREATE (p:Person {id: $id})").param("id", id.clone())).await.unwrap(); - txn.run(query("CREATE (p:Person {id: $id})").param("id", id.clone())).await.unwrap(); - // graph.execute(..) will not see the changes done above as the txn is not committed yet - let mut result = graph.execute(query("MATCH (p:Person) WHERE p.id = $id RETURN p.id").param("id", id.clone())).await.unwrap(); - assert!(result.next().await.unwrap().is_none()); - let bookmark = txn.commit().await.unwrap(); - assert!(bookmark.is_some()); - if let Some(ref b) = bookmark { - println!("Got a bookmark after commit: {:?}", b); - } - - //changes are now seen as the transaction is committed. - let mut txn = graph.start_txn_as(Operation::Read, bookmark.map(|b| vec![b])).await.expect("Failed to start a new transaction"); - let mut stream = txn.execute(query("MATCH (p:Person) WHERE p.id = $id RETURN p.id").param("id", id.clone())).await.unwrap(); - loop { - let next = stream.next(txn.handle()); - if let Ok(Some(record)) = next.await { - println!("Record: {:?}", record); - } else { - break; - } - } -} diff --git a/lib/include/configurations.rs b/lib/include/configurations.rs deleted file mode 100644 index d34f3348..00000000 --- a/lib/include/configurations.rs +++ /dev/null @@ -1,7 +0,0 @@ -{ - let mut result = graph.execute(query("RETURN 1")).await.unwrap(); - let row = result.next().await.unwrap().unwrap(); - let value: i64 = row.get("1").unwrap(); - assert_eq!(1, value); - assert!(result.next().await.unwrap().is_none()); -} diff --git a/lib/src/lib.rs b/lib/src/lib.rs index db416eae..ecfbc200 100644 --- a/lib/src/lib.rs +++ b/lib/src/lib.rs @@ -24,7 +24,7 @@ //! //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/example.rs")] +#![doc = include_snippet!("../integrationtests/tests/example.rs")] //! } //! ``` //! @@ -51,7 +51,7 @@ //! .unwrap(); //! let graph = Graph::connect(config).unwrap(); //! -#![doc = include_str!("../include/configurations.rs")] +#![doc = include_snippet!("../integrationtests/tests/configurations.rs")] //! } //! ``` //! @@ -70,7 +70,7 @@ //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/nodes.rs")] +#![doc = include_snippet!("../integrationtests/tests/nodes.rs")] //! } //! ``` //! @@ -93,7 +93,7 @@ //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/transactions.rs")] +#![doc = include_snippet!("../integrationtests/tests/transactions.rs")] //! } //! //! ``` @@ -119,7 +119,7 @@ //! .unwrap(); //! let graph = Graph::connect(config).unwrap(); //! -#![doc = include_str!("../include/streams_within_a_transaction.rs")] +#![doc = include_snippet!("../integrationtests/tests/streams_within_a_transaction.rs")] //! } //! //! ``` @@ -143,7 +143,7 @@ //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/result_stream.rs")] +#![doc = include_snippet!("../integrationtests/tests/result_stream.rs")] //! } //! //! ``` @@ -170,7 +170,7 @@ async fn main() { )] #![cfg_attr( feature = "unstable-bolt-protocol-impl-v2", - doc = include_str!("../include/bookmarks.rs") + doc = include_snippet!("../integrationtests/tests/bookmarks.rs") )] #![cfg_attr( feature = "unstable-bolt-protocol-impl-v2", @@ -200,7 +200,7 @@ async fn main() { )] #![cfg_attr( feature = "unstable-result-summary", - doc = include_str!("../include/result_summary.rs") + doc = include_snippet!("../integrationtests/tests/result_summary.rs") )] #![cfg_attr( feature = "unstable-result-summary", @@ -221,7 +221,7 @@ async fn main() { //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/rollback_a_transaction.rs")] +#![doc = include_snippet!("../integrationtests/tests/rollback_a_transaction.rs")] //! } //! //! ``` @@ -246,7 +246,7 @@ async fn main() { //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/txn_vs_graph.rs")] +#![doc = include_snippet!("../integrationtests/tests/txn_vs_graph.rs")] //! } //! //! ``` @@ -266,7 +266,7 @@ async fn main() { //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/relationships.rs")] +#![doc = include_snippet!("../integrationtests/tests/relationships.rs")] //! } //! ``` //! @@ -283,7 +283,7 @@ async fn main() { //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/unbounded_relationships.rs")] +#![doc = include_snippet!("../integrationtests/tests/unbounded_relationships.rs")] //! } //! //! ``` @@ -310,7 +310,7 @@ async fn main() { //! point({ x: 1.1, y: 5.4, crs: 'cartesian' }) AS p2 //! RETURN point.distance(p1,p2) AS dist, p1, p2 //! "; -#![doc = include_str!("../include/points.rs")] +#![doc = include_snippet!("../integrationtests/tests/points.rs")] //! } //! //! ``` @@ -328,7 +328,7 @@ async fn main() { //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/raw_bytes.rs")] +#![doc = include_snippet!("../integrationtests/tests/raw_bytes.rs")] //! } //! //! ``` @@ -346,7 +346,7 @@ async fn main() { //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/durations.rs")] +#![doc = include_snippet!("../integrationtests/tests/durations.rs")] //! } //! //! ``` @@ -366,7 +366,7 @@ async fn main() { //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/dates.rs")] +#![doc = include_snippet!("../integrationtests/tests/dates.rs")] //! } //! ``` //! @@ -395,7 +395,7 @@ async fn main() { //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/time_as_param.rs")] +#![doc = include_snippet!("../integrationtests/tests/time_as_param.rs")] //! } //! ``` //! @@ -412,7 +412,7 @@ async fn main() { //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/parse_time_from_result.rs")] +#![doc = include_snippet!("../integrationtests/tests/parse_time_from_result.rs")] //! } //! //! ``` @@ -443,7 +443,7 @@ async fn main() { //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/datetime_as_param.rs")] +#![doc = include_snippet!("../integrationtests/tests/datetime_as_param.rs")] //! } //! ``` //! @@ -459,7 +459,7 @@ async fn main() { //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/parse_datetime_from_result.rs")] +#![doc = include_snippet!("../integrationtests/tests/parse_datetime_from_result.rs")] //! } //! //! ``` @@ -478,7 +478,7 @@ async fn main() { //! let pass = "neo"; //! let graph = Graph::new(uri, user, pass).unwrap(); //! -#![doc = include_str!("../include/path.rs")] +#![doc = include_snippet!("../integrationtests/tests/path.rs")] //! } //! ``` //! diff --git a/lib/tests/bookmarks.rs b/lib/tests/bookmarks.rs deleted file mode 100644 index 1312691d..00000000 --- a/lib/tests/bookmarks.rs +++ /dev/null @@ -1,12 +0,0 @@ -#![cfg(feature = "unstable-bolt-protocol-impl-v2")] -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn transactions() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/bookmarks.rs"); -} diff --git a/lib/tests/dates.rs b/lib/tests/dates.rs deleted file mode 100644 index b5164234..00000000 --- a/lib/tests/dates.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn dates() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/dates.rs"); -} diff --git a/lib/tests/datetime_as_param.rs b/lib/tests/datetime_as_param.rs deleted file mode 100644 index 199ade4d..00000000 --- a/lib/tests/datetime_as_param.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn datetime_as_param() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/datetime_as_param.rs"); -} diff --git a/lib/tests/durations.rs b/lib/tests/durations.rs deleted file mode 100644 index 229b3c06..00000000 --- a/lib/tests/durations.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn durations() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/durations.rs"); -} diff --git a/lib/tests/example.rs b/lib/tests/example.rs deleted file mode 100644 index b93ba7f1..00000000 --- a/lib/tests/example.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn basic_example() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/example.rs"); -} diff --git a/lib/tests/nodes.rs b/lib/tests/nodes.rs deleted file mode 100644 index a343bd4f..00000000 --- a/lib/tests/nodes.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn nodes() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/nodes.rs"); -} diff --git a/lib/tests/parse_datetime_from_result.rs b/lib/tests/parse_datetime_from_result.rs deleted file mode 100644 index 8362c1fc..00000000 --- a/lib/tests/parse_datetime_from_result.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn parse_datetime_from_result() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/parse_datetime_from_result.rs"); -} diff --git a/lib/tests/parse_time_from_result.rs b/lib/tests/parse_time_from_result.rs deleted file mode 100644 index 8d0adc4f..00000000 --- a/lib/tests/parse_time_from_result.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn parse_time_from_result() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/parse_time_from_result.rs"); -} diff --git a/lib/tests/path.rs b/lib/tests/path.rs deleted file mode 100644 index 2a775fd7..00000000 --- a/lib/tests/path.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -pub async fn path() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/path.rs"); -} diff --git a/lib/tests/points.rs b/lib/tests/points.rs deleted file mode 100644 index 0a51d62d..00000000 --- a/lib/tests/points.rs +++ /dev/null @@ -1,25 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn points() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - let distance = if neo4j.version().major >= 5 { - "point.distance(p1,p2)" - } else { - "distance(p1,p2)" - }; - - let qry = format!( - "WITH point({{ x: 2.3, y: 4.5, crs: 'cartesian' }}) AS p1, - point({{ x: 1.1, y: 5.4, crs: 'cartesian' }}) AS p2 - RETURN {distance} AS dist, p1, p2", - distance = distance - ); - let qry = &qry; - - include!("../include/points.rs"); -} diff --git a/lib/tests/raw_bytes.rs b/lib/tests/raw_bytes.rs deleted file mode 100644 index dc8f645f..00000000 --- a/lib/tests/raw_bytes.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn raw_bytes() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/raw_bytes.rs"); -} diff --git a/lib/tests/relationships.rs b/lib/tests/relationships.rs deleted file mode 100644 index cded9da3..00000000 --- a/lib/tests/relationships.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn relationships() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/relationships.rs"); -} diff --git a/lib/tests/result_stream.rs b/lib/tests/result_stream.rs deleted file mode 100644 index e5dab62f..00000000 --- a/lib/tests/result_stream.rs +++ /dev/null @@ -1,13 +0,0 @@ -use neo4rs::*; - -mod container; - -// The purpose of the test is to not use a `must_use` -#[allow(unused_must_use)] -#[tokio::test] -async fn result_stream() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/result_stream.rs"); -} diff --git a/lib/tests/result_summary.rs b/lib/tests/result_summary.rs deleted file mode 100644 index 1fa64331..00000000 --- a/lib/tests/result_summary.rs +++ /dev/null @@ -1,12 +0,0 @@ -#![cfg(feature = "unstable-result-summary")] -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn streaming_summary() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/result_summary.rs"); -} diff --git a/lib/tests/rollback_a_transaction.rs b/lib/tests/rollback_a_transaction.rs deleted file mode 100644 index 4f86478e..00000000 --- a/lib/tests/rollback_a_transaction.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn rollback_a_transaction() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/rollback_a_transaction.rs"); -} diff --git a/lib/tests/streams_within_a_transaction.rs b/lib/tests/streams_within_a_transaction.rs deleted file mode 100644 index 6d666388..00000000 --- a/lib/tests/streams_within_a_transaction.rs +++ /dev/null @@ -1,12 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn streams_within_a_transaction() { - let config = ConfigBuilder::default().fetch_size(1); - let neo4j = container::Neo4jContainer::from_config(config).await; - let graph = neo4j.graph(); - - include!("../include/streams_within_a_transaction.rs"); -} diff --git a/lib/tests/time_as_param.rs b/lib/tests/time_as_param.rs deleted file mode 100644 index f5aada35..00000000 --- a/lib/tests/time_as_param.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -pub(crate) async fn time_as_param() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/time_as_param.rs"); -} diff --git a/lib/tests/transactions.rs b/lib/tests/transactions.rs deleted file mode 100644 index abda178b..00000000 --- a/lib/tests/transactions.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn transactions() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/transactions.rs"); -} diff --git a/lib/tests/txn_vs_graph.rs b/lib/tests/txn_vs_graph.rs deleted file mode 100644 index 9ec6f80b..00000000 --- a/lib/tests/txn_vs_graph.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn txn_vs_graph() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/txn_vs_graph.rs"); -} diff --git a/lib/tests/unbounded_relationships.rs b/lib/tests/unbounded_relationships.rs deleted file mode 100644 index 7c29977d..00000000 --- a/lib/tests/unbounded_relationships.rs +++ /dev/null @@ -1,11 +0,0 @@ -use neo4rs::*; - -mod container; - -#[tokio::test] -async fn unbounded_relationships() { - let neo4j = container::Neo4jContainer::new().await; - let graph = neo4j.graph(); - - include!("../include/unbounded_relationships.rs"); -} From bbaaf2d6665bc4ff56bbb6063274b9076763feff Mon Sep 17 00:00:00 2001 From: Paul Horn Date: Wed, 12 Nov 2025 19:09:56 +0100 Subject: [PATCH 3/9] Have to use cargo command to use + qualifiers --- xtask/src/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/xtask/src/main.rs b/xtask/src/main.rs index f74dd4eb..0c23f3e1 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -64,7 +64,7 @@ fn update_msrv_lock() -> Result { pin_msrv_versions(dry_run, &sh, &cargo, &lockfile)?; - cmd!(sh, "{cargo} +{msrv} test --no-run --all-features").run_if(dry_run)?; + cmd!(sh, "cargo +{msrv} test --no-run --all-features").run_if(dry_run)?; cmd!(sh, "cp {lockfile} {ci_dir}/Cargo.lock.msrv").run_if(dry_run)?; @@ -86,7 +86,7 @@ fn update_min_lock() -> Result { cmd!( sh, - "{cargo} +nightly -Z minimal-versions test --no-run --all-features" + "cargo +nightly -Z minimal-versions test --package neo4rs --no-run --all-features" ) .env("RUST_LOG", "debug") .run_if(dry_run)?; From 1390cfd73270a7f6a778ca72e1b1c1d0a04bf18a Mon Sep 17 00:00:00 2001 From: Paul Horn Date: Fri, 14 Nov 2025 18:03:29 +0100 Subject: [PATCH 4/9] Update version pins --- xtask/Cargo.toml | 2 +- xtask/src/main.rs | 11 +++++------ 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/xtask/Cargo.toml b/xtask/Cargo.toml index e9f3aaba..949902ef 100644 --- a/xtask/Cargo.toml +++ b/xtask/Cargo.toml @@ -7,4 +7,4 @@ publish = false # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -xshell = "0.2.5" +xshell = "0.2.7" diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 0c23f3e1..47ae1975 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -2,7 +2,7 @@ use std::env; -use xshell::{cmd, Shell}; +use xshell::{Shell, cmd}; fn main() { if let Err(e) = try_main() { @@ -99,11 +99,10 @@ fn update_min_lock() -> Result { fn pin_msrv_versions(dry_run: bool, sh: &Shell, cargo: &str, lockfile: &str) -> Result<()> { cmd!(sh, "rm {lockfile}").run_if(dry_run)?; - let pin_versions: &[(String, &str)] = &[ - ("backon".to_owned(), "1.5.2"), - ("idna_adapter".to_owned(), "1.2.0"), - ("litemap".to_owned(), "0.7.5"), - ("home".to_owned(), "0.5.11"), + let pin_versions: &[(&str, &str)] = &[ + ("backon", "1.5.2"), + ("idna_adapter", "1.2.0"), + ("litemap", "0.7.5"), ]; for (krate, version) in pin_versions { pin_version(dry_run, sh, cargo, krate, version)?; From dbb4ac3a0890a9606a5ed75e88c486610ae141db Mon Sep 17 00:00:00 2001 From: Paul Horn Date: Fri, 14 Nov 2025 18:03:52 +0100 Subject: [PATCH 5/9] Bump MSRV to 1.85 This matches debian stable at the moment --- .github/workflows/checks.yml | 2 +- .github/workflows/create-release-pr.yml | 2 +- README.md | 2 +- include_snippet/Cargo.toml | 1 + 4 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index 39968af4..e32f7781 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -23,7 +23,7 @@ on: env: RUST_LOG: debug CARGO_TERM_COLOR: always - MSRV: 1.81.0 + MSRV: 1.85.0 HACK: hack --package neo4rs --each-feature --exclude-features unstable-serde-packstream-format,unstable-bolt-protocol-impl-v2,unstable-result-summary jobs: diff --git a/.github/workflows/create-release-pr.yml b/.github/workflows/create-release-pr.yml index 1552a151..d03aaad1 100644 --- a/.github/workflows/create-release-pr.yml +++ b/.github/workflows/create-release-pr.yml @@ -20,7 +20,7 @@ on: env: RUSTUP_TOOLCHAIN: stable - MSRV: 1.81.0 + MSRV: 1.85.0 jobs: make-release-pr: diff --git a/README.md b/README.md index 3846af9b..36b2c74a 100644 --- a/README.md +++ b/README.md @@ -55,7 +55,7 @@ Only the latest 5.x version is supported, following the [Neo4j Version support p ## MSRV -The crate has a minimum supported Rust version (MSRV) of `1.81.0` as of 0.9.x. +The crate has a minimum supported Rust version (MSRV) of `1.85.0` as of 0.9.x. The version [0.8.x](https://crates.io/crates/neo4rs/0.8.0) has an MSRV of `1.63.0` A change in the MSRV is *not* considered a breaking change. diff --git a/include_snippet/Cargo.toml b/include_snippet/Cargo.toml index 2140e3f4..9086316e 100644 --- a/include_snippet/Cargo.toml +++ b/include_snippet/Cargo.toml @@ -3,6 +3,7 @@ name = "neo4rs_include_snippet" version = "0.9.0-rc.8" edition = "2021" description = "Internal proc macro for the include_snippet! macro" +rust-version = "1.85" publish = true [lib] From 7e3cf9b011ef80a6082175367c3e4532791eb526 Mon Sep 17 00:00:00 2001 From: Paul Horn Date: Fri, 14 Nov 2025 18:11:08 +0100 Subject: [PATCH 6/9] Update lockfiles --- ci/Cargo.lock.min | 846 ++++++--------------------------------------- ci/Cargo.lock.msrv | 846 ++++++--------------------------------------- xtask/src/main.rs | 6 +- 3 files changed, 204 insertions(+), 1494 deletions(-) diff --git a/ci/Cargo.lock.min b/ci/Cargo.lock.min index db7fdd4c..2d11551b 100644 --- a/ci/Cargo.lock.min +++ b/ci/Cargo.lock.min @@ -29,23 +29,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - [[package]] name = "autocfg" version = "1.5.0" @@ -54,88 +37,26 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backon" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "592277618714fbcecda9a02ba7a8781f319d26532a88553bbacc77ba5d2b3a8d" +checksum = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef" dependencies = [ "fastrand", "tokio", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" -[[package]] -name = "bollard" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ccca1260af6a459d75994ad5acc1651bcabcbdbc41467cc9786519ab854c30" -dependencies = [ - "base64 0.22.1", - "bollard-stubs", - "bytes", - "futures-core", - "futures-util", - "hex", - "home", - "http", - "http-body-util", - "hyper", - "hyper-named-pipe", - "hyper-rustls", - "hyper-util", - "hyperlocal", - "log", - "pin-project-lite", - "rustls", - "rustls-native-certs", - "rustls-pemfile", - "rustls-pki-types", - "serde", - "serde_derive", - "serde_json", - "serde_repr", - "serde_urlencoded", - "thiserror", - "tokio", - "tokio-util", - "tower-service", - "url", - "winapi", -] - -[[package]] -name = "bollard-stubs" -version = "1.47.1-rc.27.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f179cfbddb6e77a5472703d4b30436bff32929c0aa8a9008ecf23d1d3cdd0da" -dependencies = [ - "serde", - "serde_repr", - "serde_with", -] - [[package]] name = "bumpalo" version = "3.19.0" @@ -150,18 +71,18 @@ checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" dependencies = [ "serde", ] [[package]] name = "cc" -version = "1.2.45" +version = "1.2.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" +checksum = "b97463e1064cb1b1c1384ad0a0b9c8abd0988e2a91f52606c80ef14aadb63e36" dependencies = [ "find-msvc-tools", "shlex", @@ -296,29 +217,12 @@ dependencies = [ "syn", ] -[[package]] -name = "docker_credential" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d89dfcba45b4afad7450a99b39e751590463e45c04728cf555d36bb66940de8" -dependencies = [ - "base64 0.21.7", - "serde", - "serde_json", -] - [[package]] name = "dyn-clone" version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - [[package]] name = "env_logger" version = "0.10.2" @@ -338,50 +242,17 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "etcetera" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" -dependencies = [ - "cfg-if", - "home", - "windows-sys 0.48.0", -] - [[package]] name = "fastrand" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" -[[package]] -name = "filetime" -version = "0.2.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" -dependencies = [ - "cfg-if", - "libc", - "libredox", - "windows-sys 0.60.2", -] - [[package]] name = "find-msvc-tools" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" [[package]] name = "fnv" @@ -534,156 +405,12 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "http" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - [[package]] name = "humantime" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" -[[package]] -name = "hyper" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1744436df46f0bde35af3eda22aeaba453aada65d8f1c171cd8a5f59030bd69f" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "pin-utils", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-named-pipe" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" -dependencies = [ - "hex", - "hyper", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", - "winapi", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" -dependencies = [ - "http", - "hyper", - "hyper-util", - "rustls", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http", - "http-body", - "hyper", - "libc", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "hyperlocal" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" -dependencies = [ - "hex", - "http-body-util", - "hyper", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", -] - [[package]] name = "iana-time-zone" version = "0.1.64" @@ -710,21 +437,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -733,99 +461,61 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" dependencies = [ - "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", + "icu_locale_core", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "ident_case" version = "1.0.1" @@ -845,9 +535,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -884,7 +574,7 @@ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -909,69 +599,17 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "lenient_semver" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de8de3f4f3754c280ce1c8c42ed8dd26a9c8385c2e5ad4ec5a77e774cea9c1ec" -dependencies = [ - "lenient_semver_parser", - "lenient_version", -] - -[[package]] -name = "lenient_semver_parser" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f650c1d024ddc26b4bb79c3076b30030f2cf2b18292af698c81f7337a64d7d6" -dependencies = [ - "lenient_semver_version_builder", -] - -[[package]] -name = "lenient_semver_version_builder" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9049f8ff49f75b946f95557148e70230499c8a642bf2d6528246afc7d0282d17" - -[[package]] -name = "lenient_version" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad7b41cc0ad9b8a9f8d8fcb7c2ab6703a6da4b369cbb7e3a63ee0840769b4eb" -dependencies = [ - "lenient_semver_parser", - "lenient_semver_version_builder", -] - [[package]] name = "libc" version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" -[[package]] -name = "libredox" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" -dependencies = [ - "bitflags 2.10.0", - "libc", - "redox_syscall 0.5.18", -] - -[[package]] -name = "linux-raw-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" - [[package]] name = "litemap" -version = "0.7.5" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "lock_api" @@ -1015,6 +653,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "mutants" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0287524726960e07b119cebd01678f852f147742ae0d925e6a520dca956126" + [[package]] name = "nalgebra" version = "0.32.6" @@ -1062,10 +706,10 @@ dependencies = [ "deadpool", "delegate", "futures", - "lenient_semver", "log", "nav-types", "neo4rs-macros", + "neo4rs_include_snippet", "pastey", "pin-project-lite", "pretty_env_logger", @@ -1079,8 +723,6 @@ dependencies = [ "serde_with", "tap", "test-case", - "testcontainers", - "testcontainers-modules", "thiserror", "time", "tokio", @@ -1097,6 +739,13 @@ dependencies = [ "syn", ] +[[package]] +name = "neo4rs_include_snippet" +version = "0.9.0-rc.8" +dependencies = [ + "unsynn", +] + [[package]] name = "num-complex" version = "0.4.6" @@ -1180,36 +829,11 @@ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.18", + "redox_syscall", "smallvec", "windows-link", ] -[[package]] -name = "parse-display" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "914a1c2265c98e2446911282c6ac86d8524f495792c38c5bd884f80499c7538a" -dependencies = [ - "parse-display-derive", - "regex", - "regex-syntax", -] - -[[package]] -name = "parse-display-derive" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ae7800a4c974efd12df917266338e79a7a74415173caf7e70aa0a0707345281" -dependencies = [ - "proc-macro2", - "quote", - "regex", - "regex-syntax", - "structmeta", - "syn", -] - [[package]] name = "paste" version = "1.0.15" @@ -1258,6 +882,15 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -1304,22 +937,13 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.10.0", + "bitflags", ] [[package]] @@ -1385,19 +1009,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rustix" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" -dependencies = [ - "bitflags 2.10.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.52.0", -] - [[package]] name = "rustls" version = "0.23.35" @@ -1519,7 +1130,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.10.0", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -1589,17 +1200,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "serde_test" version = "1.0.177" @@ -1609,25 +1209,13 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - [[package]] name = "serde_with" version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" dependencies = [ - "base64 0.22.1", + "base64", "chrono", "hex", "indexmap 1.9.3", @@ -1652,6 +1240,12 @@ dependencies = [ "syn", ] +[[package]] +name = "shadow_counted" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65da48d447333cebe1aadbdd3662f3ba56e76e67f53bc46f3dd5f67c74629d6b" + [[package]] name = "shlex" version = "1.3.0" @@ -1720,29 +1314,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" -[[package]] -name = "structmeta" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e1575d8d40908d70f6fd05537266b90ae71b15dbbe7a8b7dffa2b759306d329" -dependencies = [ - "proc-macro2", - "quote", - "structmeta-derive", - "syn", -] - -[[package]] -name = "structmeta-derive" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "subtle" version = "2.6.1" @@ -1819,44 +1390,6 @@ dependencies = [ "test-case-core", ] -[[package]] -name = "testcontainers" -version = "0.23.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a4f01f39bb10fc2a5ab23eb0d888b1e2bb168c157f61a1b98e6c501c639c74" -dependencies = [ - "async-trait", - "bollard", - "bollard-stubs", - "bytes", - "docker_credential", - "either", - "etcetera", - "futures", - "log", - "memchr", - "parse-display", - "pin-project-lite", - "serde", - "serde_json", - "serde_with", - "thiserror", - "tokio", - "tokio-stream", - "tokio-tar", - "tokio-util", - "url", -] - -[[package]] -name = "testcontainers-modules" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d43ed4e8f58424c3a2c6c56dbea6643c3c23e8666a34df13c54f0a184e6c707" -dependencies = [ - "testcontainers", -] - [[package]] name = "thiserror" version = "2.0.17" @@ -1910,9 +1443,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -1956,76 +1489,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-stream" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-tar" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5714c010ca3e5c27114c1cdeb9d14641ace49874aa5626d7149e47aedace75" -dependencies = [ - "filetime", - "futures-core", - "libc", - "redox_syscall 0.3.5", - "tokio", - "tokio-stream", - "xattr", -] - -[[package]] -name = "tokio-util" -version = "0.7.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" -dependencies = [ - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - [[package]] name = "typenum" version = "1.19.0" @@ -2038,6 +1501,17 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +[[package]] +name = "unsynn" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd574186a61b234717745ee569f9323def8ac863c2e4b512a25d3b0ec39322fc" +dependencies = [ + "mutants", + "proc-macro2", + "shadow_counted", +] + [[package]] name = "untrusted" version = "0.9.0" @@ -2056,12 +1530,6 @@ dependencies = [ "serde", ] -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -2080,15 +1548,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -2159,37 +1618,15 @@ dependencies = [ "safe_arch", ] -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - [[package]] name = "winapi-util" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - [[package]] name = "windows-core" version = "0.62.2" @@ -2249,15 +1686,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -2267,15 +1695,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-sys" version = "0.60.2" @@ -2294,21 +1713,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -2342,12 +1746,6 @@ dependencies = [ "windows_x86_64_msvc 0.53.1", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -2360,12 +1758,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -2378,12 +1770,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -2408,12 +1794,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -2426,12 +1806,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -2444,12 +1818,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -2462,12 +1830,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -2486,27 +1848,11 @@ version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - -[[package]] -name = "xattr" -version = "1.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" -dependencies = [ - "libc", - "rustix", -] +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "xshell" @@ -2532,11 +1878,10 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -2544,9 +1889,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", @@ -2581,11 +1926,22 @@ version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -2594,9 +1950,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", diff --git a/ci/Cargo.lock.msrv b/ci/Cargo.lock.msrv index db7fdd4c..2d11551b 100644 --- a/ci/Cargo.lock.msrv +++ b/ci/Cargo.lock.msrv @@ -29,23 +29,6 @@ dependencies = [ "num-traits", ] -[[package]] -name = "async-trait" -version = "0.1.89" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "atomic-waker" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" - [[package]] name = "autocfg" version = "1.5.0" @@ -54,88 +37,26 @@ checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "backon" -version = "1.5.2" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "592277618714fbcecda9a02ba7a8781f319d26532a88553bbacc77ba5d2b3a8d" +checksum = "cffb0e931875b666fc4fcb20fee52e9bbd1ef836fd9e9e04ec21555f9f85f7ef" dependencies = [ "fastrand", "tokio", ] -[[package]] -name = "base64" -version = "0.21.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" - [[package]] name = "base64" version = "0.22.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" version = "2.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" -[[package]] -name = "bollard" -version = "0.18.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97ccca1260af6a459d75994ad5acc1651bcabcbdbc41467cc9786519ab854c30" -dependencies = [ - "base64 0.22.1", - "bollard-stubs", - "bytes", - "futures-core", - "futures-util", - "hex", - "home", - "http", - "http-body-util", - "hyper", - "hyper-named-pipe", - "hyper-rustls", - "hyper-util", - "hyperlocal", - "log", - "pin-project-lite", - "rustls", - "rustls-native-certs", - "rustls-pemfile", - "rustls-pki-types", - "serde", - "serde_derive", - "serde_json", - "serde_repr", - "serde_urlencoded", - "thiserror", - "tokio", - "tokio-util", - "tower-service", - "url", - "winapi", -] - -[[package]] -name = "bollard-stubs" -version = "1.47.1-rc.27.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f179cfbddb6e77a5472703d4b30436bff32929c0aa8a9008ecf23d1d3cdd0da" -dependencies = [ - "serde", - "serde_repr", - "serde_with", -] - [[package]] name = "bumpalo" version = "3.19.0" @@ -150,18 +71,18 @@ checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" [[package]] name = "bytes" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" +checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" dependencies = [ "serde", ] [[package]] name = "cc" -version = "1.2.45" +version = "1.2.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" +checksum = "b97463e1064cb1b1c1384ad0a0b9c8abd0988e2a91f52606c80ef14aadb63e36" dependencies = [ "find-msvc-tools", "shlex", @@ -296,29 +217,12 @@ dependencies = [ "syn", ] -[[package]] -name = "docker_credential" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d89dfcba45b4afad7450a99b39e751590463e45c04728cf555d36bb66940de8" -dependencies = [ - "base64 0.21.7", - "serde", - "serde_json", -] - [[package]] name = "dyn-clone" version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" -[[package]] -name = "either" -version = "1.15.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" - [[package]] name = "env_logger" version = "0.10.2" @@ -338,50 +242,17 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" -[[package]] -name = "errno" -version = "0.3.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "etcetera" -version = "0.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "136d1b5283a1ab77bd9257427ffd09d8667ced0570b6f938942bc7568ed5b943" -dependencies = [ - "cfg-if", - "home", - "windows-sys 0.48.0", -] - [[package]] name = "fastrand" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" -[[package]] -name = "filetime" -version = "0.2.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc0505cd1b6fa6580283f6bdf70a73fcf4aba1184038c90902b92b3dd0df63ed" -dependencies = [ - "cfg-if", - "libc", - "libredox", - "windows-sys 0.60.2", -] - [[package]] name = "find-msvc-tools" -version = "0.1.4" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" +checksum = "3a3076410a55c90011c298b04d0cfa770b00fa04e1e3c97d3f6c9de105a03844" [[package]] name = "fnv" @@ -534,156 +405,12 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys 0.59.0", -] - -[[package]] -name = "http" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" -dependencies = [ - "bytes", - "fnv", - "itoa", -] - -[[package]] -name = "http-body" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" -dependencies = [ - "bytes", - "http", -] - -[[package]] -name = "http-body-util" -version = "0.1.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" -dependencies = [ - "bytes", - "futures-core", - "http", - "http-body", - "pin-project-lite", -] - -[[package]] -name = "httparse" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" - -[[package]] -name = "httpdate" -version = "1.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" - [[package]] name = "humantime" version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "135b12329e5e3ce057a9f972339ea52bc954fe1e9358ef27f95e89716fbc5424" -[[package]] -name = "hyper" -version = "1.8.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1744436df46f0bde35af3eda22aeaba453aada65d8f1c171cd8a5f59030bd69f" -dependencies = [ - "atomic-waker", - "bytes", - "futures-channel", - "futures-core", - "http", - "http-body", - "httparse", - "httpdate", - "itoa", - "pin-project-lite", - "pin-utils", - "smallvec", - "tokio", - "want", -] - -[[package]] -name = "hyper-named-pipe" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b7d8abf35697b81a825e386fc151e0d503e8cb5fcb93cc8669c376dfd6f278" -dependencies = [ - "hex", - "hyper", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", - "winapi", -] - -[[package]] -name = "hyper-rustls" -version = "0.27.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" -dependencies = [ - "http", - "hyper", - "hyper-util", - "rustls", - "rustls-pki-types", - "tokio", - "tokio-rustls", - "tower-service", -] - -[[package]] -name = "hyper-util" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c6995591a8f1380fcb4ba966a252a4b29188d51d2b89e3a252f5305be65aea8" -dependencies = [ - "bytes", - "futures-channel", - "futures-core", - "futures-util", - "http", - "http-body", - "hyper", - "libc", - "pin-project-lite", - "socket2", - "tokio", - "tower-service", - "tracing", -] - -[[package]] -name = "hyperlocal" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "986c5ce3b994526b3cd75578e62554abd09f0899d6206de48b3e96ab34ccc8c7" -dependencies = [ - "hex", - "http-body-util", - "hyper", - "hyper-util", - "pin-project-lite", - "tokio", - "tower-service", -] - [[package]] name = "iana-time-zone" version = "0.1.64" @@ -710,21 +437,22 @@ dependencies = [ [[package]] name = "icu_collections" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", + "potential_utf", "yoke", "zerofrom", "zerovec", ] [[package]] -name = "icu_locid" -version = "1.5.0" +name = "icu_locale_core" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +checksum = "edba7861004dd3714265b4db54a3c390e880ab658fec5f7db895fae2046b5bb6" dependencies = [ "displaydoc", "litemap", @@ -733,99 +461,61 @@ dependencies = [ "zerovec", ] -[[package]] -name = "icu_locid_transform" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" -dependencies = [ - "displaydoc", - "icu_locid", - "icu_locid_transform_data", - "icu_provider", - "tinystr", - "zerovec", -] - -[[package]] -name = "icu_locid_transform_data" -version = "1.5.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7515e6d781098bf9f7205ab3fc7e9709d34554ae0b21ddbcb5febfa4bc7df11d" - [[package]] name = "icu_normalizer" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "utf8_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "1.5.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5e8338228bdc8ab83303f16b797e177953730f601a96c25d10cb3ab0daa0cb7" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "1.5.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +checksum = "e93fcd3157766c0c8da2f8cff6ce651a31f0810eaa1c51ec363ef790bbb5fb99" dependencies = [ - "displaydoc", "icu_collections", - "icu_locid_transform", + "icu_locale_core", "icu_properties_data", "icu_provider", - "tinystr", + "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "1.5.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85fb8799753b75aee8d2a21d7c14d9f38921b54b3dbda10f5a3c7a7b82dba5e2" +checksum = "02845b3647bb045f1100ecd6480ff52f34c35f82d9880e029d329c21d1054899" [[package]] name = "icu_provider" -version = "1.5.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +checksum = "85962cf0ce02e1e0a629cc34e7ca3e373ce20dda4c4d7294bbd0bf1fdb59e614" dependencies = [ "displaydoc", - "icu_locid", - "icu_provider_macros", - "stable_deref_trait", - "tinystr", + "icu_locale_core", "writeable", "yoke", "zerofrom", + "zerotrie", "zerovec", ] -[[package]] -name = "icu_provider_macros" -version = "1.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "ident_case" version = "1.0.1" @@ -845,9 +535,9 @@ dependencies = [ [[package]] name = "idna_adapter" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" dependencies = [ "icu_normalizer", "icu_properties", @@ -884,7 +574,7 @@ checksum = "3640c1c38b8e4e43584d8df18be5fc6b0aa314ce6ebf51b53313d4306cca8e46" dependencies = [ "hermit-abi", "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -909,69 +599,17 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" -[[package]] -name = "lenient_semver" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de8de3f4f3754c280ce1c8c42ed8dd26a9c8385c2e5ad4ec5a77e774cea9c1ec" -dependencies = [ - "lenient_semver_parser", - "lenient_version", -] - -[[package]] -name = "lenient_semver_parser" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f650c1d024ddc26b4bb79c3076b30030f2cf2b18292af698c81f7337a64d7d6" -dependencies = [ - "lenient_semver_version_builder", -] - -[[package]] -name = "lenient_semver_version_builder" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9049f8ff49f75b946f95557148e70230499c8a642bf2d6528246afc7d0282d17" - -[[package]] -name = "lenient_version" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bad7b41cc0ad9b8a9f8d8fcb7c2ab6703a6da4b369cbb7e3a63ee0840769b4eb" -dependencies = [ - "lenient_semver_parser", - "lenient_semver_version_builder", -] - [[package]] name = "libc" version = "0.2.177" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" -[[package]] -name = "libredox" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" -dependencies = [ - "bitflags 2.10.0", - "libc", - "redox_syscall 0.5.18", -] - -[[package]] -name = "linux-raw-sys" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" - [[package]] name = "litemap" -version = "0.7.5" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23fb14cb19457329c82206317a5663005a4d404783dc74f4252769b0d5f42856" +checksum = "6373607a59f0be73a39b6fe456b8192fcc3585f602af20751600e974dd455e77" [[package]] name = "lock_api" @@ -1015,6 +653,12 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "mutants" +version = "0.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc0287524726960e07b119cebd01678f852f147742ae0d925e6a520dca956126" + [[package]] name = "nalgebra" version = "0.32.6" @@ -1062,10 +706,10 @@ dependencies = [ "deadpool", "delegate", "futures", - "lenient_semver", "log", "nav-types", "neo4rs-macros", + "neo4rs_include_snippet", "pastey", "pin-project-lite", "pretty_env_logger", @@ -1079,8 +723,6 @@ dependencies = [ "serde_with", "tap", "test-case", - "testcontainers", - "testcontainers-modules", "thiserror", "time", "tokio", @@ -1097,6 +739,13 @@ dependencies = [ "syn", ] +[[package]] +name = "neo4rs_include_snippet" +version = "0.9.0-rc.8" +dependencies = [ + "unsynn", +] + [[package]] name = "num-complex" version = "0.4.6" @@ -1180,36 +829,11 @@ checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" dependencies = [ "cfg-if", "libc", - "redox_syscall 0.5.18", + "redox_syscall", "smallvec", "windows-link", ] -[[package]] -name = "parse-display" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "914a1c2265c98e2446911282c6ac86d8524f495792c38c5bd884f80499c7538a" -dependencies = [ - "parse-display-derive", - "regex", - "regex-syntax", -] - -[[package]] -name = "parse-display-derive" -version = "0.9.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ae7800a4c974efd12df917266338e79a7a74415173caf7e70aa0a0707345281" -dependencies = [ - "proc-macro2", - "quote", - "regex", - "regex-syntax", - "structmeta", - "syn", -] - [[package]] name = "paste" version = "1.0.15" @@ -1258,6 +882,15 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "potential_utf" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -1304,22 +937,13 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" -[[package]] -name = "redox_syscall" -version = "0.3.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_syscall" version = "0.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" dependencies = [ - "bitflags 2.10.0", + "bitflags", ] [[package]] @@ -1385,19 +1009,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "rustix" -version = "1.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" -dependencies = [ - "bitflags 2.10.0", - "errno", - "libc", - "linux-raw-sys", - "windows-sys 0.52.0", -] - [[package]] name = "rustls" version = "0.23.35" @@ -1519,7 +1130,7 @@ version = "3.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b3297343eaf830f66ede390ea39da1d462b6b0c1b000f420d0a83f898bbbe6ef" dependencies = [ - "bitflags 2.10.0", + "bitflags", "core-foundation", "core-foundation-sys", "libc", @@ -1589,17 +1200,6 @@ dependencies = [ "serde_core", ] -[[package]] -name = "serde_repr" -version = "0.1.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "175ee3e80ae9982737ca543e96133087cbd9a485eecc3bc4de9c1a37b47ea59c" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "serde_test" version = "1.0.177" @@ -1609,25 +1209,13 @@ dependencies = [ "serde", ] -[[package]] -name = "serde_urlencoded" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" -dependencies = [ - "form_urlencoded", - "itoa", - "ryu", - "serde", -] - [[package]] name = "serde_with" version = "3.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aa66c845eee442168b2c8134fec70ac50dc20e760769c8ba0ad1319ca1959b04" dependencies = [ - "base64 0.22.1", + "base64", "chrono", "hex", "indexmap 1.9.3", @@ -1652,6 +1240,12 @@ dependencies = [ "syn", ] +[[package]] +name = "shadow_counted" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "65da48d447333cebe1aadbdd3662f3ba56e76e67f53bc46f3dd5f67c74629d6b" + [[package]] name = "shlex" version = "1.3.0" @@ -1720,29 +1314,6 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" -[[package]] -name = "structmeta" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2e1575d8d40908d70f6fd05537266b90ae71b15dbbe7a8b7dffa2b759306d329" -dependencies = [ - "proc-macro2", - "quote", - "structmeta-derive", - "syn", -] - -[[package]] -name = "structmeta-derive" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "subtle" version = "2.6.1" @@ -1819,44 +1390,6 @@ dependencies = [ "test-case-core", ] -[[package]] -name = "testcontainers" -version = "0.23.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59a4f01f39bb10fc2a5ab23eb0d888b1e2bb168c157f61a1b98e6c501c639c74" -dependencies = [ - "async-trait", - "bollard", - "bollard-stubs", - "bytes", - "docker_credential", - "either", - "etcetera", - "futures", - "log", - "memchr", - "parse-display", - "pin-project-lite", - "serde", - "serde_json", - "serde_with", - "thiserror", - "tokio", - "tokio-stream", - "tokio-tar", - "tokio-util", - "url", -] - -[[package]] -name = "testcontainers-modules" -version = "0.11.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d43ed4e8f58424c3a2c6c56dbea6643c3c23e8666a34df13c54f0a184e6c707" -dependencies = [ - "testcontainers", -] - [[package]] name = "thiserror" version = "2.0.17" @@ -1910,9 +1443,9 @@ dependencies = [ [[package]] name = "tinystr" -version = "0.7.6" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" +checksum = "42d3e9c45c09de15d06dd8acf5f4e0e399e85927b7f00711024eb7ae10fa4869" dependencies = [ "displaydoc", "zerovec", @@ -1956,76 +1489,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "tokio-stream" -version = "0.1.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" -dependencies = [ - "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-tar" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d5714c010ca3e5c27114c1cdeb9d14641ace49874aa5626d7149e47aedace75" -dependencies = [ - "filetime", - "futures-core", - "libc", - "redox_syscall 0.3.5", - "tokio", - "tokio-stream", - "xattr", -] - -[[package]] -name = "tokio-util" -version = "0.7.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2efa149fe76073d6e8fd97ef4f4eca7b67f599660115591483572e406e165594" -dependencies = [ - "bytes", - "futures-core", - "futures-sink", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tower-service" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" - -[[package]] -name = "tracing" -version = "0.1.41" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" -dependencies = [ - "pin-project-lite", - "tracing-core", -] - -[[package]] -name = "tracing-core" -version = "0.1.34" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" -dependencies = [ - "once_cell", -] - -[[package]] -name = "try-lock" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" - [[package]] name = "typenum" version = "1.19.0" @@ -2038,6 +1501,17 @@ version = "1.0.22" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9312f7c4f6ff9069b165498234ce8be658059c6728633667c526e27dc2cf1df5" +[[package]] +name = "unsynn" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd574186a61b234717745ee569f9323def8ac863c2e4b512a25d3b0ec39322fc" +dependencies = [ + "mutants", + "proc-macro2", + "shadow_counted", +] + [[package]] name = "untrusted" version = "0.9.0" @@ -2056,12 +1530,6 @@ dependencies = [ "serde", ] -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -2080,15 +1548,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "want" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" -dependencies = [ - "try-lock", -] - [[package]] name = "wasi" version = "0.11.1+wasi-snapshot-preview1" @@ -2159,37 +1618,15 @@ dependencies = [ "safe_arch", ] -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - [[package]] name = "winapi-util" version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" - [[package]] name = "windows-core" version = "0.62.2" @@ -2249,15 +1686,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" @@ -2267,15 +1695,6 @@ dependencies = [ "windows-targets 0.52.6", ] -[[package]] -name = "windows-sys" -version = "0.59.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" -dependencies = [ - "windows-targets 0.52.6", -] - [[package]] name = "windows-sys" version = "0.60.2" @@ -2294,21 +1713,6 @@ dependencies = [ "windows-link", ] -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", -] - [[package]] name = "windows-targets" version = "0.52.6" @@ -2342,12 +1746,6 @@ dependencies = [ "windows_x86_64_msvc 0.53.1", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.6" @@ -2360,12 +1758,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.6" @@ -2378,12 +1770,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.6" @@ -2408,12 +1794,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.6" @@ -2426,12 +1806,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.6" @@ -2444,12 +1818,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.6" @@ -2462,12 +1830,6 @@ version = "0.53.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.6" @@ -2486,27 +1848,11 @@ version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" -version = "0.5.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" - -[[package]] -name = "xattr" -version = "1.6.1" +version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" -dependencies = [ - "libc", - "rustix", -] +checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" [[package]] name = "xshell" @@ -2532,11 +1878,10 @@ dependencies = [ [[package]] name = "yoke" -version = "0.7.5" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +checksum = "72d6e5c6afb84d73944e5cedb052c4680d5657337201555f9f2a16b7406d4954" dependencies = [ - "serde", "stable_deref_trait", "yoke-derive", "zerofrom", @@ -2544,9 +1889,9 @@ dependencies = [ [[package]] name = "yoke-derive" -version = "0.7.5" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", @@ -2581,11 +1926,22 @@ version = "1.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b97154e67e32c85465826e8bcc1c59429aaaf107c1e4a9e53c8d8ccd5eff88d0" +[[package]] +name = "zerotrie" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a59c17a5562d507e4b54960e8569ebee33bee890c70aa3fe7b97e85a9fd7851" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + [[package]] name = "zerovec" -version = "0.10.4" +version = "0.11.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +checksum = "6c28719294829477f525be0186d13efa9a3c602f7ec202ca9e353d310fb9a002" dependencies = [ "yoke", "zerofrom", @@ -2594,9 +1950,9 @@ dependencies = [ [[package]] name = "zerovec-derive" -version = "0.10.3" +version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", diff --git a/xtask/src/main.rs b/xtask/src/main.rs index 47ae1975..d028d862 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -2,7 +2,7 @@ use std::env; -use xshell::{Shell, cmd}; +use xshell::{cmd, Shell}; fn main() { if let Err(e) = try_main() { @@ -100,9 +100,7 @@ fn pin_msrv_versions(dry_run: bool, sh: &Shell, cargo: &str, lockfile: &str) -> cmd!(sh, "rm {lockfile}").run_if(dry_run)?; let pin_versions: &[(&str, &str)] = &[ - ("backon", "1.5.2"), - ("idna_adapter", "1.2.0"), - ("litemap", "0.7.5"), + ("nalgebra", "0.32.6"), ]; for (krate, version) in pin_versions { pin_version(dry_run, sh, cargo, krate, version)?; From 4087228c4561138a7d427020c3676bece25225c5 Mon Sep 17 00:00:00 2001 From: Paul Horn Date: Fri, 14 Nov 2025 18:13:20 +0100 Subject: [PATCH 7/9] Format --- xtask/src/main.rs | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/xtask/src/main.rs b/xtask/src/main.rs index d028d862..d1adfa07 100644 --- a/xtask/src/main.rs +++ b/xtask/src/main.rs @@ -99,9 +99,7 @@ fn update_min_lock() -> Result { fn pin_msrv_versions(dry_run: bool, sh: &Shell, cargo: &str, lockfile: &str) -> Result<()> { cmd!(sh, "rm {lockfile}").run_if(dry_run)?; - let pin_versions: &[(&str, &str)] = &[ - ("nalgebra", "0.32.6"), - ]; + let pin_versions: &[(&str, &str)] = &[("nalgebra", "0.32.6")]; for (krate, version) in pin_versions { pin_version(dry_run, sh, cargo, krate, version)?; } From d75c7436f57f300fdb19d563620d3450d78b18ba Mon Sep 17 00:00:00 2001 From: Paul Horn Date: Fri, 14 Nov 2025 18:20:22 +0100 Subject: [PATCH 8/9] Fix clippy lint --- lib/src/query.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/src/query.rs b/lib/src/query.rs index fb1639e2..f0db6f26 100644 --- a/lib/src/query.rs +++ b/lib/src/query.rs @@ -258,7 +258,7 @@ pub(crate) struct RetryableQuery<'a> { bookmarks: Vec, } -impl<'a> RetryableQuery<'a> { +impl RetryableQuery<'_> { pub(crate) async fn retry_run(self) -> (Self, QueryResult) { let result = self.run().await; (self, result) From 093bcd77edac0e94ed8d4a9948eb9435e26c6bcf Mon Sep 17 00:00:00 2001 From: Paul Horn Date: Fri, 14 Nov 2025 18:20:26 +0100 Subject: [PATCH 9/9] Fix CI commands --- .github/workflows/checks.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/checks.yml b/.github/workflows/checks.yml index e32f7781..9fcdba21 100644 --- a/.github/workflows/checks.yml +++ b/.github/workflows/checks.yml @@ -24,7 +24,7 @@ env: RUST_LOG: debug CARGO_TERM_COLOR: always MSRV: 1.85.0 - HACK: hack --package neo4rs --each-feature --exclude-features unstable-serde-packstream-format,unstable-bolt-protocol-impl-v2,unstable-result-summary + HACK_OPTS: --each-feature --exclude-features unstable-serde-packstream-format,unstable-bolt-protocol-impl-v2,unstable-result-summary jobs: fmt: @@ -75,7 +75,7 @@ jobs: run: cp ci/Cargo.lock.msrv Cargo.lock - name: Run clippy - run: cargo +$MSRV --locked ${{ env.HACK }} clippy -- -D warnings + run: cargo +${{ env.MSRV }} --locked hack --package neo4rs ${{ env.HACK_OPTS }} clippy -- -D warnings unit-tests: name: Run unit tests @@ -109,7 +109,7 @@ jobs: run: cp ci/Cargo.lock.msrv Cargo.lock - name: Run unit tests - run: cargo +$MSRV --locked ${{ env.HACK }} nextest run --lib + run: cargo +${{ env.MSRV }} --locked hack --package neo4rs ${{ env.HACK_OPTS }} nextest run --lib integration-tests: name: Run integration tests @@ -153,7 +153,7 @@ jobs: uses: taiki-e/install-action@nextest - name: Run integration tests - run: cargo {{ env.HACK }} nextest run -E 'kind(test)' + run: cargo hack ${{ env.HACK_OPTS }} nextest --manifest-path './integrationtests/Cargo.toml' run -E 'kind(test)' min_dep: name: Validate minimal dependency versions @@ -178,7 +178,7 @@ jobs: run: cp ci/Cargo.lock.min Cargo.lock - name: Run minimal dependency versions unit tests - run: cargo +$MSRV nextest --package neo4rs run --lib --all-features --locked + run: cargo +${{ env.MSRV }} nextest run --package neo4rs --lib --all-features --locked release: name: Release