This is a new version of the Rust bindings for Libnbd. This version contains two major differences compared to the previous one:
First it (hopefully) solves a bug in the asynchronous API which in some cases could lead to a deadlock. This means that the implementation of the asynchronous API has been somewhat changed. Secondly, the dependency on rust-bindgen is finally removed. So LLVM is no longer needed to build the bindings. Best regards, Tage Tage Johansson (11): rust: create basic Rust bindings generator: Add information about asynchronous handle calls generator: Add information about the lifetime of closures rust: Use more specific closure traits rust: Add a couple of integration tests rust: Make it possible to run tests with Valgrind rust: async: Create an async friendly handle type generator: Add `modifies_fd` flag to the [call] structure rust: async: Use the `modifies_fd` flag to exclude calls rust: async: Add a couple of integration tests rust: Add some examples .gitignore | 7 + .ocamlformat | 4 + Makefile.am | 1 + configure.ac | 13 + generator/API.ml | 84 ++ generator/API.mli | 35 + generator/Makefile.am | 4 + generator/Rust.ml | 797 ++++++++++++++++++ generator/Rust.mli | 22 + generator/RustSys.ml | 167 ++++ generator/RustSys.mli | 19 + generator/generator.ml | 4 + rust/Cargo.toml | 60 ++ rust/Makefile.am | 78 ++ rust/examples/concurrent-read-write.rs | 135 +++ rust/examples/connect-command.rs | 39 + rust/examples/fetch-first-sector.rs | 38 + rust/examples/get-size.rs | 29 + rust/libnbd-sys/Cargo.toml | 32 + rust/libnbd-sys/build.rs | 26 + rust/libnbd-sys/src/.keep | 0 rust/run-tests.sh | 37 + rust/src/async_handle.rs | 268 ++++++ rust/src/error.rs | 154 ++++ rust/src/handle.rs | 67 ++ rust/src/lib.rs | 36 + rust/src/types.rs | 20 + rust/src/utils.rs | 23 + rust/tests/nbdkit_pattern/mod.rs | 28 + rust/tests/test_100_handle.rs | 25 + rust/tests/test_110_defaults.rs | 33 + rust/tests/test_120_set_non_defaults.rs | 53 ++ rust/tests/test_130_private_data.rs | 28 + rust/tests/test_140_explicit_close.rs | 31 + rust/tests/test_200_connect_command.rs | 32 + rust/tests/test_210_opt_abort.rs | 31 + rust/tests/test_220_opt_list.rs | 86 ++ rust/tests/test_230_opt_info.rs | 120 +++ rust/tests/test_240_opt_list_meta.rs | 147 ++++ rust/tests/test_245_opt_list_meta_queries.rs | 93 ++ rust/tests/test_250_opt_set_meta.rs | 123 +++ rust/tests/test_255_opt_set_meta_queries.rs | 109 +++ rust/tests/test_300_get_size.rs | 35 + rust/tests/test_400_pread.rs | 39 + rust/tests/test_405_pread_structured.rs | 79 ++ rust/tests/test_410_pwrite.rs | 58 ++ rust/tests/test_460_block_status.rs | 92 ++ rust/tests/test_620_stats.rs | 75 ++ rust/tests/test_async_100_handle.rs | 25 + rust/tests/test_async_200_connect_command.rs | 33 + rust/tests/test_async_210_opt_abort.rs | 32 + rust/tests/test_async_220_opt_list.rs | 81 ++ rust/tests/test_async_230_opt_info.rs | 122 +++ rust/tests/test_async_240_opt_list_meta.rs | 147 ++++ .../test_async_245_opt_list_meta_queries.rs | 91 ++ rust/tests/test_async_250_opt_set_meta.rs | 122 +++ .../test_async_255_opt_set_meta_queries.rs | 107 +++ rust/tests/test_async_400_pread.rs | 40 + rust/tests/test_async_405_pread_structured.rs | 84 ++ rust/tests/test_async_410_pwrite.rs | 59 ++ rust/tests/test_async_460_block_status.rs | 92 ++ rust/tests/test_async_620_stats.rs | 76 ++ rust/tests/test_log/mod.rs | 86 ++ rustfmt.toml | 19 + 64 files changed, 4732 insertions(+) create mode 100644 .ocamlformat create mode 100644 generator/Rust.ml create mode 100644 generator/Rust.mli create mode 100644 generator/RustSys.ml create mode 100644 generator/RustSys.mli create mode 100644 rust/Cargo.toml create mode 100644 rust/Makefile.am create mode 100644 rust/examples/concurrent-read-write.rs create mode 100644 rust/examples/connect-command.rs create mode 100644 rust/examples/fetch-first-sector.rs create mode 100644 rust/examples/get-size.rs create mode 100644 rust/libnbd-sys/Cargo.toml create mode 100644 rust/libnbd-sys/build.rs create mode 100644 rust/libnbd-sys/src/.keep create mode 100755 rust/run-tests.sh create mode 100644 rust/src/async_handle.rs create mode 100644 rust/src/error.rs create mode 100644 rust/src/handle.rs create mode 100644 rust/src/lib.rs create mode 100644 rust/src/types.rs create mode 100644 rust/src/utils.rs create mode 100644 rust/tests/nbdkit_pattern/mod.rs create mode 100644 rust/tests/test_100_handle.rs create mode 100644 rust/tests/test_110_defaults.rs create mode 100644 rust/tests/test_120_set_non_defaults.rs create mode 100644 rust/tests/test_130_private_data.rs create mode 100644 rust/tests/test_140_explicit_close.rs create mode 100644 rust/tests/test_200_connect_command.rs create mode 100644 rust/tests/test_210_opt_abort.rs create mode 100644 rust/tests/test_220_opt_list.rs create mode 100644 rust/tests/test_230_opt_info.rs create mode 100644 rust/tests/test_240_opt_list_meta.rs create mode 100644 rust/tests/test_245_opt_list_meta_queries.rs create mode 100644 rust/tests/test_250_opt_set_meta.rs create mode 100644 rust/tests/test_255_opt_set_meta_queries.rs create mode 100644 rust/tests/test_300_get_size.rs create mode 100644 rust/tests/test_400_pread.rs create mode 100644 rust/tests/test_405_pread_structured.rs create mode 100644 rust/tests/test_410_pwrite.rs create mode 100644 rust/tests/test_460_block_status.rs create mode 100644 rust/tests/test_620_stats.rs create mode 100644 rust/tests/test_async_100_handle.rs create mode 100644 rust/tests/test_async_200_connect_command.rs create mode 100644 rust/tests/test_async_210_opt_abort.rs create mode 100644 rust/tests/test_async_220_opt_list.rs create mode 100644 rust/tests/test_async_230_opt_info.rs create mode 100644 rust/tests/test_async_240_opt_list_meta.rs create mode 100644 rust/tests/test_async_245_opt_list_meta_queries.rs create mode 100644 rust/tests/test_async_250_opt_set_meta.rs create mode 100644 rust/tests/test_async_255_opt_set_meta_queries.rs create mode 100644 rust/tests/test_async_400_pread.rs create mode 100644 rust/tests/test_async_405_pread_structured.rs create mode 100644 rust/tests/test_async_410_pwrite.rs create mode 100644 rust/tests/test_async_460_block_status.rs create mode 100644 rust/tests/test_async_620_stats.rs create mode 100644 rust/tests/test_log/mod.rs create mode 100644 rustfmt.toml -- 2.41.0 _______________________________________________ Libguestfs mailing list Libguestfs@redhat.com https://listman.redhat.com/mailman/listinfo/libguestfs