diff mbox series

[3/5] rust-example: provide a recipe for zvariant

Message ID 417bea7e5fbf6c5e82d8594eac002c2a809686d2.1679734210.git.frederic.martinsons@gmail.com
State New
Headers show
Series [1/5] cargo_common.bbclass: Support local github repos | expand

Commit Message

Frédéric Martinsons March 25, 2023, 9 a.m. UTC
From: Frederic Martinsons <frederic.martinsons@gmail.com>

This recipe is for showing an "real world" example of
a crate that depends on some git repositories.

Usually, this kind of crate is built within a global
workspace (here it is the zbus project) and so
doesn't need a Cargo.lock on its own.

For the sake of the demonstration, I had to add
a patch for probiding a Cargo.lock and modifying
zvariant_deriver to get it from crates.io instead
of pulling locally with a relative path

The use case where the crate had some git repository
in dependency is very common for "private" crate that
are not aimed to be published on crate.io.
When the project grow bigger, it is common to have
a bin and multiple lib developped in parallel, and these
libs are surely on a git repostitory.

Hence the need of this support in oe-core.

Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
---
 .../rust-example/zvariant-crates.inc          |  140 ++
 .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
 .../rust-example/zvariant_3.12.0.bb           |   20 +
 3 files changed, 1409 insertions(+)
 create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
 create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
 create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb

Comments

Alexander Kanavin March 25, 2023, 6:51 p.m. UTC | #1
I don't think this should be going in oe-core, as it's not actually
used by anything, or in any automated tests. But you can place it in a
separate layer.

Alex

On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> From: Frederic Martinsons <frederic.martinsons@gmail.com>
>
> This recipe is for showing an "real world" example of
> a crate that depends on some git repositories.
>
> Usually, this kind of crate is built within a global
> workspace (here it is the zbus project) and so
> doesn't need a Cargo.lock on its own.
>
> For the sake of the demonstration, I had to add
> a patch for probiding a Cargo.lock and modifying
> zvariant_deriver to get it from crates.io instead
> of pulling locally with a relative path
>
> The use case where the crate had some git repository
> in dependency is very common for "private" crate that
> are not aimed to be published on crate.io.
> When the project grow bigger, it is common to have
> a bin and multiple lib developped in parallel, and these
> libs are surely on a git repostitory.
>
> Hence the need of this support in oe-core.
>
> Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> ---
>  .../rust-example/zvariant-crates.inc          |  140 ++
>  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
>  .../rust-example/zvariant_3.12.0.bb           |   20 +
>  3 files changed, 1409 insertions(+)
>  create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
>  create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>  create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>
> diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
> new file mode 100644
> index 0000000000..297a784661
> --- /dev/null
> +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
> @@ -0,0 +1,140 @@
> +SRC_URI += " \
> +    crate://crates.io/anes/0.1.6 \
> +    crate://crates.io/anyhow/1.0.70 \
> +    crate://crates.io/arrayvec/0.7.2 \
> +    crate://crates.io/atty/0.2.14 \
> +    crate://crates.io/autocfg/1.1.0 \
> +    crate://crates.io/bitflags/1.3.2 \
> +    crate://crates.io/bumpalo/3.12.0 \
> +    crate://crates.io/byteorder/1.4.3 \
> +    crate://crates.io/cast/0.3.0 \
> +    crate://crates.io/cfg-if/1.0.0 \
> +    crate://crates.io/chrono/0.4.24 \
> +    crate://crates.io/ciborium-io/0.2.0 \
> +    crate://crates.io/ciborium-ll/0.2.0 \
> +    crate://crates.io/ciborium/0.2.0 \
> +    crate://crates.io/clap/3.2.23 \
> +    crate://crates.io/clap_lex/0.2.4 \
> +    crate://crates.io/criterion-plot/0.5.0 \
> +    crate://crates.io/criterion/0.4.0 \
> +    crate://crates.io/crossbeam-channel/0.5.7 \
> +    crate://crates.io/crossbeam-deque/0.8.3 \
> +    crate://crates.io/crossbeam-epoch/0.9.14 \
> +    crate://crates.io/crossbeam-utils/0.8.15 \
> +    crate://crates.io/either/1.8.1 \
> +    crate://crates.io/enumflags2/0.7.5 \
> +    crate://crates.io/enumflags2_derive/0.7.4 \
> +    crate://crates.io/form_urlencoded/1.1.0 \
> +    crate://crates.io/futures-channel/0.3.27 \
> +    crate://crates.io/futures-core/0.3.27 \
> +    crate://crates.io/futures-executor/0.3.27 \
> +    crate://crates.io/futures-macro/0.3.27 \
> +    crate://crates.io/futures-task/0.3.27 \
> +    crate://crates.io/futures-util/0.3.27 \
> +    crate://crates.io/getrandom/0.2.8 \
> +    crate://crates.io/half/1.8.2 \
> +    crate://crates.io/hashbrown/0.12.3 \
> +    crate://crates.io/heck/0.3.3 \
> +    crate://crates.io/hermit-abi/0.1.19 \
> +    crate://crates.io/hermit-abi/0.2.6 \
> +    crate://crates.io/idna/0.3.0 \
> +    crate://crates.io/indexmap/1.9.2 \
> +    crate://crates.io/itertools/0.10.5 \
> +    crate://crates.io/itertools/0.9.0 \
> +    crate://crates.io/itoa/1.0.6 \
> +    crate://crates.io/js-sys/0.3.61 \
> +    crate://crates.io/lazy_static/1.4.0 \
> +    crate://crates.io/libc/0.2.140 \
> +    crate://crates.io/log/0.4.17 \
> +    crate://crates.io/memchr/2.5.0 \
> +    crate://crates.io/memoffset/0.8.0 \
> +    crate://crates.io/num-integer/0.1.45 \
> +    crate://crates.io/num-traits/0.2.15 \
> +    crate://crates.io/num_cpus/1.15.0 \
> +    crate://crates.io/once_cell/1.17.1 \
> +    crate://crates.io/oorandom/11.1.3 \
> +    crate://crates.io/os_str_bytes/6.5.0 \
> +    crate://crates.io/percent-encoding/2.2.0 \
> +    crate://crates.io/pin-project-lite/0.2.9 \
> +    crate://crates.io/pin-utils/0.1.0 \
> +    crate://crates.io/pkg-config/0.3.26 \
> +    crate://crates.io/plotters-backend/0.3.4 \
> +    crate://crates.io/plotters-svg/0.3.3 \
> +    crate://crates.io/plotters/0.3.4 \
> +    crate://crates.io/ppv-lite86/0.2.17 \
> +    crate://crates.io/proc-macro-crate/0.1.5 \
> +    crate://crates.io/proc-macro-crate/1.3.1 \
> +    crate://crates.io/proc-macro-error-attr/1.0.4 \
> +    crate://crates.io/proc-macro-error/1.0.4 \
> +    crate://crates.io/proc-macro2/1.0.53 \
> +    crate://crates.io/quote/1.0.26 \
> +    crate://crates.io/rand/0.8.5 \
> +    crate://crates.io/rand_chacha/0.3.1 \
> +    crate://crates.io/rand_core/0.6.4 \
> +    crate://crates.io/rayon-core/1.11.0 \
> +    crate://crates.io/rayon/1.7.0 \
> +    crate://crates.io/regex-syntax/0.6.29 \
> +    crate://crates.io/regex/1.7.2 \
> +    crate://crates.io/ryu/1.0.13 \
> +    crate://crates.io/same-file/1.0.6 \
> +    crate://crates.io/scopeguard/1.1.0 \
> +    crate://crates.io/serde/1.0.158 \
> +    crate://crates.io/serde_bytes/0.11.9 \
> +    crate://crates.io/serde_derive/1.0.158 \
> +    crate://crates.io/serde_json/1.0.94 \
> +    crate://crates.io/serde_repr/0.1.12 \
> +    crate://crates.io/slab/0.4.8 \
> +    crate://crates.io/static_assertions/1.1.0 \
> +    crate://crates.io/strum/0.18.0 \
> +    crate://crates.io/strum_macros/0.18.0 \
> +    crate://crates.io/syn/1.0.109 \
> +    crate://crates.io/syn/2.0.8 \
> +    crate://crates.io/system-deps/1.3.2 \
> +    crate://crates.io/textwrap/0.16.0 \
> +    crate://crates.io/thiserror-impl/1.0.40 \
> +    crate://crates.io/thiserror/1.0.40 \
> +    crate://crates.io/time-core/0.1.0 \
> +    crate://crates.io/time-macros/0.2.8 \
> +    crate://crates.io/time/0.3.20 \
> +    crate://crates.io/tinytemplate/1.2.1 \
> +    crate://crates.io/tinyvec/1.6.0 \
> +    crate://crates.io/tinyvec_macros/0.1.1 \
> +    crate://crates.io/toml/0.5.11 \
> +    crate://crates.io/toml_datetime/0.6.1 \
> +    crate://crates.io/toml_edit/0.19.8 \
> +    crate://crates.io/unicode-bidi/0.3.13 \
> +    crate://crates.io/unicode-ident/1.0.8 \
> +    crate://crates.io/unicode-normalization/0.1.22 \
> +    crate://crates.io/unicode-segmentation/1.10.1 \
> +    crate://crates.io/url/2.3.1 \
> +    crate://crates.io/uuid/1.3.0 \
> +    crate://crates.io/version-compare/0.0.10 \
> +    crate://crates.io/version_check/0.9.4 \
> +    crate://crates.io/walkdir/2.3.3 \
> +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
> +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
> +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
> +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
> +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
> +    crate://crates.io/wasm-bindgen/0.2.84 \
> +    crate://crates.io/web-sys/0.3.61 \
> +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
> +    crate://crates.io/winapi-util/0.1.5 \
> +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
> +    crate://crates.io/winapi/0.3.9 \
> +    crate://crates.io/winnow/0.4.0 \
> +    crate://crates.io/zvariant_derive/3.12.0 \
> +    crate://crates.io/zvariant_utils/1.0.0 \
> +    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
> +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
> +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
> +"
> +
> +SRCREV_FORMAT .= "_glib"
> +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
> +
> +SRCREV_FORMAT .= "_glib-sys"
> +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> +
> +SRCREV_FORMAT .= "_gobject-sys"
> +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> new file mode 100644
> index 0000000000..638ba3ed4d
> --- /dev/null
> +++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> @@ -0,0 +1,1249 @@
> +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
> +From: Frederic Martinsons <frederic.martinsons@gmail.com>
> +Date: Thu, 23 Mar 2023 07:12:37 +0100
> +Subject: [PATCH] Tweak zvariant cargo config
> +
> +This library crate is a part of zbus project, and is aimed to
> +be published amongst the whole project.
> +
> +Nevertheless, this recipe is for showing example of real
> +code which uses a local registry via git url inside yocto
> +environment.
> +
> +I didn't find a real example of binary crate that uses git
> +dependency but it seems to me a very common use case
> +when we are working on multiple local crates that are not
> +aimed to be published on public registry.
> +
> +Long story short, this patch add a modified Cargo.toml
> +to use the zvariant_derive dependency from crates.io instead
> +of zbus local one and a pre generated Cargo.lock in order
> +to make cargo patch process inside cargo_common.bbclass work
> +
> +Upstream-Status: Inappropriate
> +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> +---
> + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
> + zvariant/Cargo.toml |    2 +-
> + 2 files changed, 1199 insertions(+), 1 deletion(-)
> + create mode 100644 zvariant/Cargo.lock
> +
> +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
> +new file mode 100644
> +index 00000000..02a83d42
> +--- /dev/null
> ++++ b/zvariant/Cargo.lock
> +@@ -0,0 +1,1198 @@
> ++# This file is automatically @generated by Cargo.
> ++# It is not intended for manual editing.
> ++version = 3
> ++
> ++[[package]]
> ++name = "anes"
> ++version = "0.1.6"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
> ++
> ++[[package]]
> ++name = "anyhow"
> ++version = "1.0.70"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
> ++
> ++[[package]]
> ++name = "arrayvec"
> ++version = "0.7.2"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
> ++dependencies = [
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "atty"
> ++version = "0.2.14"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
> ++dependencies = [
> ++ "hermit-abi 0.1.19",
> ++ "libc",
> ++ "winapi",
> ++]
> ++
> ++[[package]]
> ++name = "autocfg"
> ++version = "1.1.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
> ++
> ++[[package]]
> ++name = "bitflags"
> ++version = "1.3.2"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
> ++
> ++[[package]]
> ++name = "bumpalo"
> ++version = "3.12.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
> ++
> ++[[package]]
> ++name = "byteorder"
> ++version = "1.4.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
> ++
> ++[[package]]
> ++name = "cast"
> ++version = "0.3.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
> ++
> ++[[package]]
> ++name = "cfg-if"
> ++version = "1.0.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
> ++
> ++[[package]]
> ++name = "chrono"
> ++version = "0.4.24"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
> ++dependencies = [
> ++ "num-integer",
> ++ "num-traits",
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "ciborium"
> ++version = "0.2.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
> ++dependencies = [
> ++ "ciborium-io",
> ++ "ciborium-ll",
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "ciborium-io"
> ++version = "0.2.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
> ++
> ++[[package]]
> ++name = "ciborium-ll"
> ++version = "0.2.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
> ++dependencies = [
> ++ "ciborium-io",
> ++ "half",
> ++]
> ++
> ++[[package]]
> ++name = "clap"
> ++version = "3.2.23"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
> ++dependencies = [
> ++ "bitflags",
> ++ "clap_lex",
> ++ "indexmap",
> ++ "textwrap",
> ++]
> ++
> ++[[package]]
> ++name = "clap_lex"
> ++version = "0.2.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
> ++dependencies = [
> ++ "os_str_bytes",
> ++]
> ++
> ++[[package]]
> ++name = "criterion"
> ++version = "0.4.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
> ++dependencies = [
> ++ "anes",
> ++ "atty",
> ++ "cast",
> ++ "ciborium",
> ++ "clap",
> ++ "criterion-plot",
> ++ "itertools 0.10.5",
> ++ "lazy_static",
> ++ "num-traits",
> ++ "oorandom",
> ++ "plotters",
> ++ "rayon",
> ++ "regex",
> ++ "serde",
> ++ "serde_derive",
> ++ "serde_json",
> ++ "tinytemplate",
> ++ "walkdir",
> ++]
> ++
> ++[[package]]
> ++name = "criterion-plot"
> ++version = "0.5.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
> ++dependencies = [
> ++ "cast",
> ++ "itertools 0.10.5",
> ++]
> ++
> ++[[package]]
> ++name = "crossbeam-channel"
> ++version = "0.5.7"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
> ++dependencies = [
> ++ "cfg-if",
> ++ "crossbeam-utils",
> ++]
> ++
> ++[[package]]
> ++name = "crossbeam-deque"
> ++version = "0.8.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
> ++dependencies = [
> ++ "cfg-if",
> ++ "crossbeam-epoch",
> ++ "crossbeam-utils",
> ++]
> ++
> ++[[package]]
> ++name = "crossbeam-epoch"
> ++version = "0.9.14"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
> ++dependencies = [
> ++ "autocfg",
> ++ "cfg-if",
> ++ "crossbeam-utils",
> ++ "memoffset",
> ++ "scopeguard",
> ++]
> ++
> ++[[package]]
> ++name = "crossbeam-utils"
> ++version = "0.8.15"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
> ++dependencies = [
> ++ "cfg-if",
> ++]
> ++
> ++[[package]]
> ++name = "either"
> ++version = "1.8.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
> ++
> ++[[package]]
> ++name = "enumflags2"
> ++version = "0.7.5"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
> ++dependencies = [
> ++ "enumflags2_derive",
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "enumflags2_derive"
> ++version = "0.7.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++]
> ++
> ++[[package]]
> ++name = "form_urlencoded"
> ++version = "1.1.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
> ++dependencies = [
> ++ "percent-encoding",
> ++]
> ++
> ++[[package]]
> ++name = "futures-channel"
> ++version = "0.3.27"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
> ++dependencies = [
> ++ "futures-core",
> ++]
> ++
> ++[[package]]
> ++name = "futures-core"
> ++version = "0.3.27"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
> ++
> ++[[package]]
> ++name = "futures-executor"
> ++version = "0.3.27"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
> ++dependencies = [
> ++ "futures-core",
> ++ "futures-task",
> ++ "futures-util",
> ++]
> ++
> ++[[package]]
> ++name = "futures-macro"
> ++version = "0.3.27"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++]
> ++
> ++[[package]]
> ++name = "futures-task"
> ++version = "0.3.27"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
> ++
> ++[[package]]
> ++name = "futures-util"
> ++version = "0.3.27"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
> ++dependencies = [
> ++ "futures-core",
> ++ "futures-macro",
> ++ "futures-task",
> ++ "pin-project-lite",
> ++ "pin-utils",
> ++ "slab",
> ++]
> ++
> ++[[package]]
> ++name = "getrandom"
> ++version = "0.2.8"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
> ++dependencies = [
> ++ "cfg-if",
> ++ "libc",
> ++ "wasi",
> ++]
> ++
> ++[[package]]
> ++name = "glib"
> ++version = "0.10.0"
> ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
> ++dependencies = [
> ++ "bitflags",
> ++ "futures-channel",
> ++ "futures-core",
> ++ "futures-executor",
> ++ "futures-task",
> ++ "futures-util",
> ++ "glib-macros",
> ++ "glib-sys",
> ++ "gobject-sys",
> ++ "libc",
> ++ "once_cell",
> ++]
> ++
> ++[[package]]
> ++name = "glib-macros"
> ++version = "0.10.0"
> ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
> ++dependencies = [
> ++ "anyhow",
> ++ "heck",
> ++ "itertools 0.9.0",
> ++ "proc-macro-crate 0.1.5",
> ++ "proc-macro-error",
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++]
> ++
> ++[[package]]
> ++name = "glib-sys"
> ++version = "0.10.0"
> ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> ++dependencies = [
> ++ "libc",
> ++ "system-deps",
> ++]
> ++
> ++[[package]]
> ++name = "gobject-sys"
> ++version = "0.10.0"
> ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> ++dependencies = [
> ++ "glib-sys",
> ++ "libc",
> ++ "system-deps",
> ++]
> ++
> ++[[package]]
> ++name = "half"
> ++version = "1.8.2"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
> ++
> ++[[package]]
> ++name = "hashbrown"
> ++version = "0.12.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
> ++
> ++[[package]]
> ++name = "heck"
> ++version = "0.3.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
> ++dependencies = [
> ++ "unicode-segmentation",
> ++]
> ++
> ++[[package]]
> ++name = "hermit-abi"
> ++version = "0.1.19"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
> ++dependencies = [
> ++ "libc",
> ++]
> ++
> ++[[package]]
> ++name = "hermit-abi"
> ++version = "0.2.6"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
> ++dependencies = [
> ++ "libc",
> ++]
> ++
> ++[[package]]
> ++name = "idna"
> ++version = "0.3.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
> ++dependencies = [
> ++ "unicode-bidi",
> ++ "unicode-normalization",
> ++]
> ++
> ++[[package]]
> ++name = "indexmap"
> ++version = "1.9.2"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
> ++dependencies = [
> ++ "autocfg",
> ++ "hashbrown",
> ++]
> ++
> ++[[package]]
> ++name = "itertools"
> ++version = "0.9.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
> ++dependencies = [
> ++ "either",
> ++]
> ++
> ++[[package]]
> ++name = "itertools"
> ++version = "0.10.5"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
> ++dependencies = [
> ++ "either",
> ++]
> ++
> ++[[package]]
> ++name = "itoa"
> ++version = "1.0.6"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
> ++
> ++[[package]]
> ++name = "js-sys"
> ++version = "0.3.61"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
> ++dependencies = [
> ++ "wasm-bindgen",
> ++]
> ++
> ++[[package]]
> ++name = "lazy_static"
> ++version = "1.4.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
> ++
> ++[[package]]
> ++name = "libc"
> ++version = "0.2.140"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
> ++
> ++[[package]]
> ++name = "log"
> ++version = "0.4.17"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
> ++dependencies = [
> ++ "cfg-if",
> ++]
> ++
> ++[[package]]
> ++name = "memchr"
> ++version = "2.5.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
> ++
> ++[[package]]
> ++name = "memoffset"
> ++version = "0.8.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
> ++dependencies = [
> ++ "autocfg",
> ++]
> ++
> ++[[package]]
> ++name = "num-integer"
> ++version = "0.1.45"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
> ++dependencies = [
> ++ "autocfg",
> ++ "num-traits",
> ++]
> ++
> ++[[package]]
> ++name = "num-traits"
> ++version = "0.2.15"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
> ++dependencies = [
> ++ "autocfg",
> ++]
> ++
> ++[[package]]
> ++name = "num_cpus"
> ++version = "1.15.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
> ++dependencies = [
> ++ "hermit-abi 0.2.6",
> ++ "libc",
> ++]
> ++
> ++[[package]]
> ++name = "once_cell"
> ++version = "1.17.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
> ++
> ++[[package]]
> ++name = "oorandom"
> ++version = "11.1.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
> ++
> ++[[package]]
> ++name = "os_str_bytes"
> ++version = "6.5.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
> ++
> ++[[package]]
> ++name = "percent-encoding"
> ++version = "2.2.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
> ++
> ++[[package]]
> ++name = "pin-project-lite"
> ++version = "0.2.9"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
> ++
> ++[[package]]
> ++name = "pin-utils"
> ++version = "0.1.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
> ++
> ++[[package]]
> ++name = "pkg-config"
> ++version = "0.3.26"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
> ++
> ++[[package]]
> ++name = "plotters"
> ++version = "0.3.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
> ++dependencies = [
> ++ "num-traits",
> ++ "plotters-backend",
> ++ "plotters-svg",
> ++ "wasm-bindgen",
> ++ "web-sys",
> ++]
> ++
> ++[[package]]
> ++name = "plotters-backend"
> ++version = "0.3.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
> ++
> ++[[package]]
> ++name = "plotters-svg"
> ++version = "0.3.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
> ++dependencies = [
> ++ "plotters-backend",
> ++]
> ++
> ++[[package]]
> ++name = "ppv-lite86"
> ++version = "0.2.17"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
> ++
> ++[[package]]
> ++name = "proc-macro-crate"
> ++version = "0.1.5"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
> ++dependencies = [
> ++ "toml",
> ++]
> ++
> ++[[package]]
> ++name = "proc-macro-crate"
> ++version = "1.3.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
> ++dependencies = [
> ++ "once_cell",
> ++ "toml_edit",
> ++]
> ++
> ++[[package]]
> ++name = "proc-macro-error"
> ++version = "1.0.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
> ++dependencies = [
> ++ "proc-macro-error-attr",
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++ "version_check",
> ++]
> ++
> ++[[package]]
> ++name = "proc-macro-error-attr"
> ++version = "1.0.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "version_check",
> ++]
> ++
> ++[[package]]
> ++name = "proc-macro2"
> ++version = "1.0.53"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
> ++dependencies = [
> ++ "unicode-ident",
> ++]
> ++
> ++[[package]]
> ++name = "quote"
> ++version = "1.0.26"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
> ++dependencies = [
> ++ "proc-macro2",
> ++]
> ++
> ++[[package]]
> ++name = "rand"
> ++version = "0.8.5"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
> ++dependencies = [
> ++ "libc",
> ++ "rand_chacha",
> ++ "rand_core",
> ++]
> ++
> ++[[package]]
> ++name = "rand_chacha"
> ++version = "0.3.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
> ++dependencies = [
> ++ "ppv-lite86",
> ++ "rand_core",
> ++]
> ++
> ++[[package]]
> ++name = "rand_core"
> ++version = "0.6.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
> ++dependencies = [
> ++ "getrandom",
> ++]
> ++
> ++[[package]]
> ++name = "rayon"
> ++version = "1.7.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
> ++dependencies = [
> ++ "either",
> ++ "rayon-core",
> ++]
> ++
> ++[[package]]
> ++name = "rayon-core"
> ++version = "1.11.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
> ++dependencies = [
> ++ "crossbeam-channel",
> ++ "crossbeam-deque",
> ++ "crossbeam-utils",
> ++ "num_cpus",
> ++]
> ++
> ++[[package]]
> ++name = "regex"
> ++version = "1.7.2"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
> ++dependencies = [
> ++ "regex-syntax",
> ++]
> ++
> ++[[package]]
> ++name = "regex-syntax"
> ++version = "0.6.29"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
> ++
> ++[[package]]
> ++name = "ryu"
> ++version = "1.0.13"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
> ++
> ++[[package]]
> ++name = "same-file"
> ++version = "1.0.6"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
> ++dependencies = [
> ++ "winapi-util",
> ++]
> ++
> ++[[package]]
> ++name = "scopeguard"
> ++version = "1.1.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
> ++
> ++[[package]]
> ++name = "serde"
> ++version = "1.0.158"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
> ++dependencies = [
> ++ "serde_derive",
> ++]
> ++
> ++[[package]]
> ++name = "serde_bytes"
> ++version = "0.11.9"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
> ++dependencies = [
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "serde_derive"
> ++version = "1.0.158"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 2.0.8",
> ++]
> ++
> ++[[package]]
> ++name = "serde_json"
> ++version = "1.0.94"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
> ++dependencies = [
> ++ "itoa",
> ++ "ryu",
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "serde_repr"
> ++version = "0.1.12"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 2.0.8",
> ++]
> ++
> ++[[package]]
> ++name = "slab"
> ++version = "0.4.8"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
> ++dependencies = [
> ++ "autocfg",
> ++]
> ++
> ++[[package]]
> ++name = "static_assertions"
> ++version = "1.1.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
> ++
> ++[[package]]
> ++name = "strum"
> ++version = "0.18.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
> ++
> ++[[package]]
> ++name = "strum_macros"
> ++version = "0.18.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
> ++dependencies = [
> ++ "heck",
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++]
> ++
> ++[[package]]
> ++name = "syn"
> ++version = "1.0.109"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "unicode-ident",
> ++]
> ++
> ++[[package]]
> ++name = "syn"
> ++version = "2.0.8"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "unicode-ident",
> ++]
> ++
> ++[[package]]
> ++name = "system-deps"
> ++version = "1.3.2"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
> ++dependencies = [
> ++ "heck",
> ++ "pkg-config",
> ++ "strum",
> ++ "strum_macros",
> ++ "thiserror",
> ++ "toml",
> ++ "version-compare",
> ++]
> ++
> ++[[package]]
> ++name = "textwrap"
> ++version = "0.16.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
> ++
> ++[[package]]
> ++name = "thiserror"
> ++version = "1.0.40"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
> ++dependencies = [
> ++ "thiserror-impl",
> ++]
> ++
> ++[[package]]
> ++name = "thiserror-impl"
> ++version = "1.0.40"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 2.0.8",
> ++]
> ++
> ++[[package]]
> ++name = "time"
> ++version = "0.3.20"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
> ++dependencies = [
> ++ "serde",
> ++ "time-core",
> ++ "time-macros",
> ++]
> ++
> ++[[package]]
> ++name = "time-core"
> ++version = "0.1.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
> ++
> ++[[package]]
> ++name = "time-macros"
> ++version = "0.2.8"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
> ++dependencies = [
> ++ "time-core",
> ++]
> ++
> ++[[package]]
> ++name = "tinytemplate"
> ++version = "1.2.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
> ++dependencies = [
> ++ "serde",
> ++ "serde_json",
> ++]
> ++
> ++[[package]]
> ++name = "tinyvec"
> ++version = "1.6.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
> ++dependencies = [
> ++ "tinyvec_macros",
> ++]
> ++
> ++[[package]]
> ++name = "tinyvec_macros"
> ++version = "0.1.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
> ++
> ++[[package]]
> ++name = "toml"
> ++version = "0.5.11"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
> ++dependencies = [
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "toml_datetime"
> ++version = "0.6.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
> ++
> ++[[package]]
> ++name = "toml_edit"
> ++version = "0.19.8"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
> ++dependencies = [
> ++ "indexmap",
> ++ "toml_datetime",
> ++ "winnow",
> ++]
> ++
> ++[[package]]
> ++name = "unicode-bidi"
> ++version = "0.3.13"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
> ++
> ++[[package]]
> ++name = "unicode-ident"
> ++version = "1.0.8"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
> ++
> ++[[package]]
> ++name = "unicode-normalization"
> ++version = "0.1.22"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
> ++dependencies = [
> ++ "tinyvec",
> ++]
> ++
> ++[[package]]
> ++name = "unicode-segmentation"
> ++version = "1.10.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
> ++
> ++[[package]]
> ++name = "url"
> ++version = "2.3.1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
> ++dependencies = [
> ++ "form_urlencoded",
> ++ "idna",
> ++ "percent-encoding",
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "uuid"
> ++version = "1.3.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
> ++dependencies = [
> ++ "serde",
> ++]
> ++
> ++[[package]]
> ++name = "version-compare"
> ++version = "0.0.10"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
> ++
> ++[[package]]
> ++name = "version_check"
> ++version = "0.9.4"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
> ++
> ++[[package]]
> ++name = "walkdir"
> ++version = "2.3.3"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
> ++dependencies = [
> ++ "same-file",
> ++ "winapi-util",
> ++]
> ++
> ++[[package]]
> ++name = "wasi"
> ++version = "0.11.0+wasi-snapshot-preview1"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
> ++
> ++[[package]]
> ++name = "wasm-bindgen"
> ++version = "0.2.84"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
> ++dependencies = [
> ++ "cfg-if",
> ++ "wasm-bindgen-macro",
> ++]
> ++
> ++[[package]]
> ++name = "wasm-bindgen-backend"
> ++version = "0.2.84"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
> ++dependencies = [
> ++ "bumpalo",
> ++ "log",
> ++ "once_cell",
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++ "wasm-bindgen-shared",
> ++]
> ++
> ++[[package]]
> ++name = "wasm-bindgen-macro"
> ++version = "0.2.84"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
> ++dependencies = [
> ++ "quote",
> ++ "wasm-bindgen-macro-support",
> ++]
> ++
> ++[[package]]
> ++name = "wasm-bindgen-macro-support"
> ++version = "0.2.84"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++ "wasm-bindgen-backend",
> ++ "wasm-bindgen-shared",
> ++]
> ++
> ++[[package]]
> ++name = "wasm-bindgen-shared"
> ++version = "0.2.84"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
> ++
> ++[[package]]
> ++name = "web-sys"
> ++version = "0.3.61"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
> ++dependencies = [
> ++ "js-sys",
> ++ "wasm-bindgen",
> ++]
> ++
> ++[[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.5"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
> ++dependencies = [
> ++ "winapi",
> ++]
> ++
> ++[[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 = "winnow"
> ++version = "0.4.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
> ++dependencies = [
> ++ "memchr",
> ++]
> ++
> ++[[package]]
> ++name = "zvariant"
> ++version = "3.12.0"
> ++dependencies = [
> ++ "arrayvec",
> ++ "byteorder",
> ++ "chrono",
> ++ "criterion",
> ++ "enumflags2",
> ++ "glib",
> ++ "libc",
> ++ "rand",
> ++ "serde",
> ++ "serde_bytes",
> ++ "serde_json",
> ++ "serde_repr",
> ++ "static_assertions",
> ++ "time",
> ++ "url",
> ++ "uuid",
> ++ "zvariant_derive",
> ++]
> ++
> ++[[package]]
> ++name = "zvariant_derive"
> ++version = "3.12.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
> ++dependencies = [
> ++ "proc-macro-crate 1.3.1",
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++ "zvariant_utils",
> ++]
> ++
> ++[[package]]
> ++name = "zvariant_utils"
> ++version = "1.0.0"
> ++source = "registry+https://github.com/rust-lang/crates.io-index"
> ++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
> ++dependencies = [
> ++ "proc-macro2",
> ++ "quote",
> ++ "syn 1.0.109",
> ++]
> +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
> +index 45367729..6981862a 100644
> +--- a/zvariant/Cargo.toml
> ++++ b/zvariant/Cargo.toml
> +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
> + serde = { version = "1.0", features = ["derive"] }
> + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
> + enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
> +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
> ++zvariant_derive = "3.12.0"
> + serde_bytes = { version = "0.11", optional = true }
> + static_assertions = "1.1.0"
> + libc = "0.2.137"
> +2.34.1
> +
> diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> new file mode 100644
> index 0000000000..ab769b3fce
> --- /dev/null
> +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> @@ -0,0 +1,20 @@
> +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
> +DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
> +This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
> +A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
> +data and is also supported by this crate."
> +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
> +LICENSE = "MIT"
> +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
> +
> +SRC_URI = " \
> +    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
> +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
> +"
> +
> +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
> +S = "${WORKDIR}/zvariant"
> +
> +inherit cargo cargo-update-recipe-crates
> +
> +require ${BPN}-crates.inc
> --
> 2.34.1
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#179092): https://lists.openembedded.org/g/openembedded-core/message/179092
> Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Frédéric Martinsons March 25, 2023, 8:43 p.m. UTC | #2
I thought that would be treated the same as rust-hello-world_git.bb which
is in oe-core.

Anyway, I don't mind placing it elsewhere, which layer do you think this
recipe would land?



Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com> a
écrit :

> I don't think this should be going in oe-core, as it's not actually
> used by anything, or in any automated tests. But you can place it in a
> separate layer.
>
> Alex
>
> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >
> > This recipe is for showing an "real world" example of
> > a crate that depends on some git repositories.
> >
> > Usually, this kind of crate is built within a global
> > workspace (here it is the zbus project) and so
> > doesn't need a Cargo.lock on its own.
> >
> > For the sake of the demonstration, I had to add
> > a patch for probiding a Cargo.lock and modifying
> > zvariant_deriver to get it from crates.io instead
> > of pulling locally with a relative path
> >
> > The use case where the crate had some git repository
> > in dependency is very common for "private" crate that
> > are not aimed to be published on crate.io.
> > When the project grow bigger, it is common to have
> > a bin and multiple lib developped in parallel, and these
> > libs are surely on a git repostitory.
> >
> > Hence the need of this support in oe-core.
> >
> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> > ---
> >  .../rust-example/zvariant-crates.inc          |  140 ++
> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
> >  3 files changed, 1409 insertions(+)
> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant-crates.inc
> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >  create mode 100644 meta/recipes-extended/rust-example/
> zvariant_3.12.0.bb
> >
> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc
> b/meta/recipes-extended/rust-example/zvariant-crates.inc
> > new file mode 100644
> > index 0000000000..297a784661
> > --- /dev/null
> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
> > @@ -0,0 +1,140 @@
> > +SRC_URI += " \
> > +    crate://crates.io/anes/0.1.6 \
> > +    crate://crates.io/anyhow/1.0.70 \
> > +    crate://crates.io/arrayvec/0.7.2 \
> > +    crate://crates.io/atty/0.2.14 \
> > +    crate://crates.io/autocfg/1.1.0 \
> > +    crate://crates.io/bitflags/1.3.2 \
> > +    crate://crates.io/bumpalo/3.12.0 \
> > +    crate://crates.io/byteorder/1.4.3 \
> > +    crate://crates.io/cast/0.3.0 \
> > +    crate://crates.io/cfg-if/1.0.0 \
> > +    crate://crates.io/chrono/0.4.24 \
> > +    crate://crates.io/ciborium-io/0.2.0 \
> > +    crate://crates.io/ciborium-ll/0.2.0 \
> > +    crate://crates.io/ciborium/0.2.0 \
> > +    crate://crates.io/clap/3.2.23 \
> > +    crate://crates.io/clap_lex/0.2.4 \
> > +    crate://crates.io/criterion-plot/0.5.0 \
> > +    crate://crates.io/criterion/0.4.0 \
> > +    crate://crates.io/crossbeam-channel/0.5.7 \
> > +    crate://crates.io/crossbeam-deque/0.8.3 \
> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
> > +    crate://crates.io/crossbeam-utils/0.8.15 \
> > +    crate://crates.io/either/1.8.1 \
> > +    crate://crates.io/enumflags2/0.7.5 \
> > +    crate://crates.io/enumflags2_derive/0.7.4 \
> > +    crate://crates.io/form_urlencoded/1.1.0 \
> > +    crate://crates.io/futures-channel/0.3.27 \
> > +    crate://crates.io/futures-core/0.3.27 \
> > +    crate://crates.io/futures-executor/0.3.27 \
> > +    crate://crates.io/futures-macro/0.3.27 \
> > +    crate://crates.io/futures-task/0.3.27 \
> > +    crate://crates.io/futures-util/0.3.27 \
> > +    crate://crates.io/getrandom/0.2.8 \
> > +    crate://crates.io/half/1.8.2 \
> > +    crate://crates.io/hashbrown/0.12.3 \
> > +    crate://crates.io/heck/0.3.3 \
> > +    crate://crates.io/hermit-abi/0.1.19 \
> > +    crate://crates.io/hermit-abi/0.2.6 \
> > +    crate://crates.io/idna/0.3.0 \
> > +    crate://crates.io/indexmap/1.9.2 \
> > +    crate://crates.io/itertools/0.10.5 \
> > +    crate://crates.io/itertools/0.9.0 \
> > +    crate://crates.io/itoa/1.0.6 \
> > +    crate://crates.io/js-sys/0.3.61 \
> > +    crate://crates.io/lazy_static/1.4.0 \
> > +    crate://crates.io/libc/0.2.140 \
> > +    crate://crates.io/log/0.4.17 \
> > +    crate://crates.io/memchr/2.5.0 \
> > +    crate://crates.io/memoffset/0.8.0 \
> > +    crate://crates.io/num-integer/0.1.45 \
> > +    crate://crates.io/num-traits/0.2.15 \
> > +    crate://crates.io/num_cpus/1.15.0 \
> > +    crate://crates.io/once_cell/1.17.1 \
> > +    crate://crates.io/oorandom/11.1.3 \
> > +    crate://crates.io/os_str_bytes/6.5.0 \
> > +    crate://crates.io/percent-encoding/2.2.0 \
> > +    crate://crates.io/pin-project-lite/0.2.9 \
> > +    crate://crates.io/pin-utils/0.1.0 \
> > +    crate://crates.io/pkg-config/0.3.26 \
> > +    crate://crates.io/plotters-backend/0.3.4 \
> > +    crate://crates.io/plotters-svg/0.3.3 \
> > +    crate://crates.io/plotters/0.3.4 \
> > +    crate://crates.io/ppv-lite86/0.2.17 \
> > +    crate://crates.io/proc-macro-crate/0.1.5 \
> > +    crate://crates.io/proc-macro-crate/1.3.1 \
> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
> > +    crate://crates.io/proc-macro-error/1.0.4 \
> > +    crate://crates.io/proc-macro2/1.0.53 \
> > +    crate://crates.io/quote/1.0.26 \
> > +    crate://crates.io/rand/0.8.5 \
> > +    crate://crates.io/rand_chacha/0.3.1 \
> > +    crate://crates.io/rand_core/0.6.4 \
> > +    crate://crates.io/rayon-core/1.11.0 \
> > +    crate://crates.io/rayon/1.7.0 \
> > +    crate://crates.io/regex-syntax/0.6.29 \
> > +    crate://crates.io/regex/1.7.2 \
> > +    crate://crates.io/ryu/1.0.13 \
> > +    crate://crates.io/same-file/1.0.6 \
> > +    crate://crates.io/scopeguard/1.1.0 \
> > +    crate://crates.io/serde/1.0.158 \
> > +    crate://crates.io/serde_bytes/0.11.9 \
> > +    crate://crates.io/serde_derive/1.0.158 \
> > +    crate://crates.io/serde_json/1.0.94 \
> > +    crate://crates.io/serde_repr/0.1.12 \
> > +    crate://crates.io/slab/0.4.8 \
> > +    crate://crates.io/static_assertions/1.1.0 \
> > +    crate://crates.io/strum/0.18.0 \
> > +    crate://crates.io/strum_macros/0.18.0 \
> > +    crate://crates.io/syn/1.0.109 \
> > +    crate://crates.io/syn/2.0.8 \
> > +    crate://crates.io/system-deps/1.3.2 \
> > +    crate://crates.io/textwrap/0.16.0 \
> > +    crate://crates.io/thiserror-impl/1.0.40 \
> > +    crate://crates.io/thiserror/1.0.40 \
> > +    crate://crates.io/time-core/0.1.0 \
> > +    crate://crates.io/time-macros/0.2.8 \
> > +    crate://crates.io/time/0.3.20 \
> > +    crate://crates.io/tinytemplate/1.2.1 \
> > +    crate://crates.io/tinyvec/1.6.0 \
> > +    crate://crates.io/tinyvec_macros/0.1.1 \
> > +    crate://crates.io/toml/0.5.11 \
> > +    crate://crates.io/toml_datetime/0.6.1 \
> > +    crate://crates.io/toml_edit/0.19.8 \
> > +    crate://crates.io/unicode-bidi/0.3.13 \
> > +    crate://crates.io/unicode-ident/1.0.8 \
> > +    crate://crates.io/unicode-normalization/0.1.22 \
> > +    crate://crates.io/unicode-segmentation/1.10.1 \
> > +    crate://crates.io/url/2.3.1 \
> > +    crate://crates.io/uuid/1.3.0 \
> > +    crate://crates.io/version-compare/0.0.10 \
> > +    crate://crates.io/version_check/0.9.4 \
> > +    crate://crates.io/walkdir/2.3.3 \
> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
> > +    crate://crates.io/wasm-bindgen/0.2.84 \
> > +    crate://crates.io/web-sys/0.3.61 \
> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
> > +    crate://crates.io/winapi-util/0.1.5 \
> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
> > +    crate://crates.io/winapi/0.3.9 \
> > +    crate://crates.io/winnow/0.4.0 \
> > +    crate://crates.io/zvariant_derive/3.12.0 \
> > +    crate://crates.io/zvariant_utils/1.0.0 \
> > +    git://
> github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib
> \
> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys
> \
> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys
> \
> > +"
> > +
> > +SRCREV_FORMAT .= "_glib"
> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
> > +
> > +SRCREV_FORMAT .= "_glib-sys"
> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > +
> > +SRCREV_FORMAT .= "_gobject-sys"
> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > diff --git
> a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> > new file mode 100644
> > index 0000000000..638ba3ed4d
> > --- /dev/null
> > +++
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> > @@ -0,0 +1,1249 @@
> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
> > +Subject: [PATCH] Tweak zvariant cargo config
> > +
> > +This library crate is a part of zbus project, and is aimed to
> > +be published amongst the whole project.
> > +
> > +Nevertheless, this recipe is for showing example of real
> > +code which uses a local registry via git url inside yocto
> > +environment.
> > +
> > +I didn't find a real example of binary crate that uses git
> > +dependency but it seems to me a very common use case
> > +when we are working on multiple local crates that are not
> > +aimed to be published on public registry.
> > +
> > +Long story short, this patch add a modified Cargo.toml
> > +to use the zvariant_derive dependency from crates.io instead
> > +of zbus local one and a pre generated Cargo.lock in order
> > +to make cargo patch process inside cargo_common.bbclass work
> > +
> > +Upstream-Status: Inappropriate
> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> > +---
> > + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
> > + zvariant/Cargo.toml |    2 +-
> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
> > + create mode 100644 zvariant/Cargo.lock
> > +
> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
> > +new file mode 100644
> > +index 00000000..02a83d42
> > +--- /dev/null
> > ++++ b/zvariant/Cargo.lock
> > +@@ -0,0 +1,1198 @@
> > ++# This file is automatically @generated by Cargo.
> > ++# It is not intended for manual editing.
> > ++version = 3
> > ++
> > ++[[package]]
> > ++name = "anes"
> > ++version = "0.1.6"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
> > ++
> > ++[[package]]
> > ++name = "anyhow"
> > ++version = "1.0.70"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
> > ++
> > ++[[package]]
> > ++name = "arrayvec"
> > ++version = "0.7.2"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
> > ++dependencies = [
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "atty"
> > ++version = "0.2.14"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
> > ++dependencies = [
> > ++ "hermit-abi 0.1.19",
> > ++ "libc",
> > ++ "winapi",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "autocfg"
> > ++version = "1.1.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
> > ++
> > ++[[package]]
> > ++name = "bitflags"
> > ++version = "1.3.2"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
> > ++
> > ++[[package]]
> > ++name = "bumpalo"
> > ++version = "3.12.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
> > ++
> > ++[[package]]
> > ++name = "byteorder"
> > ++version = "1.4.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
> > ++
> > ++[[package]]
> > ++name = "cast"
> > ++version = "0.3.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
> > ++
> > ++[[package]]
> > ++name = "cfg-if"
> > ++version = "1.0.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
> > ++
> > ++[[package]]
> > ++name = "chrono"
> > ++version = "0.4.24"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
> > ++dependencies = [
> > ++ "num-integer",
> > ++ "num-traits",
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "ciborium"
> > ++version = "0.2.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
> > ++dependencies = [
> > ++ "ciborium-io",
> > ++ "ciborium-ll",
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "ciborium-io"
> > ++version = "0.2.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
> > ++
> > ++[[package]]
> > ++name = "ciborium-ll"
> > ++version = "0.2.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
> > ++dependencies = [
> > ++ "ciborium-io",
> > ++ "half",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "clap"
> > ++version = "3.2.23"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
> > ++dependencies = [
> > ++ "bitflags",
> > ++ "clap_lex",
> > ++ "indexmap",
> > ++ "textwrap",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "clap_lex"
> > ++version = "0.2.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
> > ++dependencies = [
> > ++ "os_str_bytes",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "criterion"
> > ++version = "0.4.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
> > ++dependencies = [
> > ++ "anes",
> > ++ "atty",
> > ++ "cast",
> > ++ "ciborium",
> > ++ "clap",
> > ++ "criterion-plot",
> > ++ "itertools 0.10.5",
> > ++ "lazy_static",
> > ++ "num-traits",
> > ++ "oorandom",
> > ++ "plotters",
> > ++ "rayon",
> > ++ "regex",
> > ++ "serde",
> > ++ "serde_derive",
> > ++ "serde_json",
> > ++ "tinytemplate",
> > ++ "walkdir",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "criterion-plot"
> > ++version = "0.5.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
> > ++dependencies = [
> > ++ "cast",
> > ++ "itertools 0.10.5",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "crossbeam-channel"
> > ++version = "0.5.7"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
> > ++dependencies = [
> > ++ "cfg-if",
> > ++ "crossbeam-utils",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "crossbeam-deque"
> > ++version = "0.8.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
> > ++dependencies = [
> > ++ "cfg-if",
> > ++ "crossbeam-epoch",
> > ++ "crossbeam-utils",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "crossbeam-epoch"
> > ++version = "0.9.14"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
> > ++dependencies = [
> > ++ "autocfg",
> > ++ "cfg-if",
> > ++ "crossbeam-utils",
> > ++ "memoffset",
> > ++ "scopeguard",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "crossbeam-utils"
> > ++version = "0.8.15"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
> > ++dependencies = [
> > ++ "cfg-if",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "either"
> > ++version = "1.8.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
> > ++
> > ++[[package]]
> > ++name = "enumflags2"
> > ++version = "0.7.5"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
> > ++dependencies = [
> > ++ "enumflags2_derive",
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "enumflags2_derive"
> > ++version = "0.7.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "form_urlencoded"
> > ++version = "1.1.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
> > ++dependencies = [
> > ++ "percent-encoding",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "futures-channel"
> > ++version = "0.3.27"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
> > ++dependencies = [
> > ++ "futures-core",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "futures-core"
> > ++version = "0.3.27"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
> > ++
> > ++[[package]]
> > ++name = "futures-executor"
> > ++version = "0.3.27"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
> > ++dependencies = [
> > ++ "futures-core",
> > ++ "futures-task",
> > ++ "futures-util",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "futures-macro"
> > ++version = "0.3.27"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "futures-task"
> > ++version = "0.3.27"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
> > ++
> > ++[[package]]
> > ++name = "futures-util"
> > ++version = "0.3.27"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
> > ++dependencies = [
> > ++ "futures-core",
> > ++ "futures-macro",
> > ++ "futures-task",
> > ++ "pin-project-lite",
> > ++ "pin-utils",
> > ++ "slab",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "getrandom"
> > ++version = "0.2.8"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
> > ++dependencies = [
> > ++ "cfg-if",
> > ++ "libc",
> > ++ "wasi",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "glib"
> > ++version = "0.10.0"
> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> > ++dependencies = [
> > ++ "bitflags",
> > ++ "futures-channel",
> > ++ "futures-core",
> > ++ "futures-executor",
> > ++ "futures-task",
> > ++ "futures-util",
> > ++ "glib-macros",
> > ++ "glib-sys",
> > ++ "gobject-sys",
> > ++ "libc",
> > ++ "once_cell",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "glib-macros"
> > ++version = "0.10.0"
> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> > ++dependencies = [
> > ++ "anyhow",
> > ++ "heck",
> > ++ "itertools 0.9.0",
> > ++ "proc-macro-crate 0.1.5",
> > ++ "proc-macro-error",
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "glib-sys"
> > ++version = "0.10.0"
> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > ++dependencies = [
> > ++ "libc",
> > ++ "system-deps",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "gobject-sys"
> > ++version = "0.10.0"
> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > ++dependencies = [
> > ++ "glib-sys",
> > ++ "libc",
> > ++ "system-deps",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "half"
> > ++version = "1.8.2"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
> > ++
> > ++[[package]]
> > ++name = "hashbrown"
> > ++version = "0.12.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
> > ++
> > ++[[package]]
> > ++name = "heck"
> > ++version = "0.3.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
> > ++dependencies = [
> > ++ "unicode-segmentation",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "hermit-abi"
> > ++version = "0.1.19"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
> > ++dependencies = [
> > ++ "libc",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "hermit-abi"
> > ++version = "0.2.6"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
> > ++dependencies = [
> > ++ "libc",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "idna"
> > ++version = "0.3.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
> > ++dependencies = [
> > ++ "unicode-bidi",
> > ++ "unicode-normalization",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "indexmap"
> > ++version = "1.9.2"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
> > ++dependencies = [
> > ++ "autocfg",
> > ++ "hashbrown",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "itertools"
> > ++version = "0.9.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
> > ++dependencies = [
> > ++ "either",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "itertools"
> > ++version = "0.10.5"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
> > ++dependencies = [
> > ++ "either",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "itoa"
> > ++version = "1.0.6"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
> > ++
> > ++[[package]]
> > ++name = "js-sys"
> > ++version = "0.3.61"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
> > ++dependencies = [
> > ++ "wasm-bindgen",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "lazy_static"
> > ++version = "1.4.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
> > ++
> > ++[[package]]
> > ++name = "libc"
> > ++version = "0.2.140"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
> > ++
> > ++[[package]]
> > ++name = "log"
> > ++version = "0.4.17"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
> > ++dependencies = [
> > ++ "cfg-if",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "memchr"
> > ++version = "2.5.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
> > ++
> > ++[[package]]
> > ++name = "memoffset"
> > ++version = "0.8.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
> > ++dependencies = [
> > ++ "autocfg",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "num-integer"
> > ++version = "0.1.45"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
> > ++dependencies = [
> > ++ "autocfg",
> > ++ "num-traits",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "num-traits"
> > ++version = "0.2.15"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
> > ++dependencies = [
> > ++ "autocfg",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "num_cpus"
> > ++version = "1.15.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
> > ++dependencies = [
> > ++ "hermit-abi 0.2.6",
> > ++ "libc",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "once_cell"
> > ++version = "1.17.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
> > ++
> > ++[[package]]
> > ++name = "oorandom"
> > ++version = "11.1.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
> > ++
> > ++[[package]]
> > ++name = "os_str_bytes"
> > ++version = "6.5.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
> > ++
> > ++[[package]]
> > ++name = "percent-encoding"
> > ++version = "2.2.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
> > ++
> > ++[[package]]
> > ++name = "pin-project-lite"
> > ++version = "0.2.9"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
> > ++
> > ++[[package]]
> > ++name = "pin-utils"
> > ++version = "0.1.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
> > ++
> > ++[[package]]
> > ++name = "pkg-config"
> > ++version = "0.3.26"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
> > ++
> > ++[[package]]
> > ++name = "plotters"
> > ++version = "0.3.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
> > ++dependencies = [
> > ++ "num-traits",
> > ++ "plotters-backend",
> > ++ "plotters-svg",
> > ++ "wasm-bindgen",
> > ++ "web-sys",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "plotters-backend"
> > ++version = "0.3.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
> > ++
> > ++[[package]]
> > ++name = "plotters-svg"
> > ++version = "0.3.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
> > ++dependencies = [
> > ++ "plotters-backend",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "ppv-lite86"
> > ++version = "0.2.17"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
> > ++
> > ++[[package]]
> > ++name = "proc-macro-crate"
> > ++version = "0.1.5"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
> > ++dependencies = [
> > ++ "toml",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "proc-macro-crate"
> > ++version = "1.3.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
> > ++dependencies = [
> > ++ "once_cell",
> > ++ "toml_edit",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "proc-macro-error"
> > ++version = "1.0.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
> > ++dependencies = [
> > ++ "proc-macro-error-attr",
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++ "version_check",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "proc-macro-error-attr"
> > ++version = "1.0.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "version_check",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "proc-macro2"
> > ++version = "1.0.53"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
> > ++dependencies = [
> > ++ "unicode-ident",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "quote"
> > ++version = "1.0.26"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "rand"
> > ++version = "0.8.5"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
> > ++dependencies = [
> > ++ "libc",
> > ++ "rand_chacha",
> > ++ "rand_core",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "rand_chacha"
> > ++version = "0.3.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
> > ++dependencies = [
> > ++ "ppv-lite86",
> > ++ "rand_core",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "rand_core"
> > ++version = "0.6.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
> > ++dependencies = [
> > ++ "getrandom",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "rayon"
> > ++version = "1.7.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
> > ++dependencies = [
> > ++ "either",
> > ++ "rayon-core",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "rayon-core"
> > ++version = "1.11.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
> > ++dependencies = [
> > ++ "crossbeam-channel",
> > ++ "crossbeam-deque",
> > ++ "crossbeam-utils",
> > ++ "num_cpus",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "regex"
> > ++version = "1.7.2"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
> > ++dependencies = [
> > ++ "regex-syntax",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "regex-syntax"
> > ++version = "0.6.29"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
> > ++
> > ++[[package]]
> > ++name = "ryu"
> > ++version = "1.0.13"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
> > ++
> > ++[[package]]
> > ++name = "same-file"
> > ++version = "1.0.6"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
> > ++dependencies = [
> > ++ "winapi-util",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "scopeguard"
> > ++version = "1.1.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
> > ++
> > ++[[package]]
> > ++name = "serde"
> > ++version = "1.0.158"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
> > ++dependencies = [
> > ++ "serde_derive",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "serde_bytes"
> > ++version = "0.11.9"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
> > ++dependencies = [
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "serde_derive"
> > ++version = "1.0.158"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 2.0.8",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "serde_json"
> > ++version = "1.0.94"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
> > ++dependencies = [
> > ++ "itoa",
> > ++ "ryu",
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "serde_repr"
> > ++version = "0.1.12"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 2.0.8",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "slab"
> > ++version = "0.4.8"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
> > ++dependencies = [
> > ++ "autocfg",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "static_assertions"
> > ++version = "1.1.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
> > ++
> > ++[[package]]
> > ++name = "strum"
> > ++version = "0.18.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
> > ++
> > ++[[package]]
> > ++name = "strum_macros"
> > ++version = "0.18.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
> > ++dependencies = [
> > ++ "heck",
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "syn"
> > ++version = "1.0.109"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "unicode-ident",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "syn"
> > ++version = "2.0.8"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "unicode-ident",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "system-deps"
> > ++version = "1.3.2"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
> > ++dependencies = [
> > ++ "heck",
> > ++ "pkg-config",
> > ++ "strum",
> > ++ "strum_macros",
> > ++ "thiserror",
> > ++ "toml",
> > ++ "version-compare",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "textwrap"
> > ++version = "0.16.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
> > ++
> > ++[[package]]
> > ++name = "thiserror"
> > ++version = "1.0.40"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
> > ++dependencies = [
> > ++ "thiserror-impl",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "thiserror-impl"
> > ++version = "1.0.40"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 2.0.8",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "time"
> > ++version = "0.3.20"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
> > ++dependencies = [
> > ++ "serde",
> > ++ "time-core",
> > ++ "time-macros",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "time-core"
> > ++version = "0.1.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
> > ++
> > ++[[package]]
> > ++name = "time-macros"
> > ++version = "0.2.8"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
> > ++dependencies = [
> > ++ "time-core",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "tinytemplate"
> > ++version = "1.2.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
> > ++dependencies = [
> > ++ "serde",
> > ++ "serde_json",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "tinyvec"
> > ++version = "1.6.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
> > ++dependencies = [
> > ++ "tinyvec_macros",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "tinyvec_macros"
> > ++version = "0.1.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
> > ++
> > ++[[package]]
> > ++name = "toml"
> > ++version = "0.5.11"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
> > ++dependencies = [
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "toml_datetime"
> > ++version = "0.6.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
> > ++
> > ++[[package]]
> > ++name = "toml_edit"
> > ++version = "0.19.8"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
> > ++dependencies = [
> > ++ "indexmap",
> > ++ "toml_datetime",
> > ++ "winnow",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "unicode-bidi"
> > ++version = "0.3.13"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
> > ++
> > ++[[package]]
> > ++name = "unicode-ident"
> > ++version = "1.0.8"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
> > ++
> > ++[[package]]
> > ++name = "unicode-normalization"
> > ++version = "0.1.22"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
> > ++dependencies = [
> > ++ "tinyvec",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "unicode-segmentation"
> > ++version = "1.10.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
> > ++
> > ++[[package]]
> > ++name = "url"
> > ++version = "2.3.1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
> > ++dependencies = [
> > ++ "form_urlencoded",
> > ++ "idna",
> > ++ "percent-encoding",
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "uuid"
> > ++version = "1.3.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
> > ++dependencies = [
> > ++ "serde",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "version-compare"
> > ++version = "0.0.10"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
> > ++
> > ++[[package]]
> > ++name = "version_check"
> > ++version = "0.9.4"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
> > ++
> > ++[[package]]
> > ++name = "walkdir"
> > ++version = "2.3.3"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
> > ++dependencies = [
> > ++ "same-file",
> > ++ "winapi-util",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "wasi"
> > ++version = "0.11.0+wasi-snapshot-preview1"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
> > ++
> > ++[[package]]
> > ++name = "wasm-bindgen"
> > ++version = "0.2.84"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
> > ++dependencies = [
> > ++ "cfg-if",
> > ++ "wasm-bindgen-macro",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "wasm-bindgen-backend"
> > ++version = "0.2.84"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
> > ++dependencies = [
> > ++ "bumpalo",
> > ++ "log",
> > ++ "once_cell",
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++ "wasm-bindgen-shared",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "wasm-bindgen-macro"
> > ++version = "0.2.84"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
> > ++dependencies = [
> > ++ "quote",
> > ++ "wasm-bindgen-macro-support",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "wasm-bindgen-macro-support"
> > ++version = "0.2.84"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++ "wasm-bindgen-backend",
> > ++ "wasm-bindgen-shared",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "wasm-bindgen-shared"
> > ++version = "0.2.84"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
> > ++
> > ++[[package]]
> > ++name = "web-sys"
> > ++version = "0.3.61"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
> > ++dependencies = [
> > ++ "js-sys",
> > ++ "wasm-bindgen",
> > ++]
> > ++
> > ++[[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.5"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
> > ++dependencies = [
> > ++ "winapi",
> > ++]
> > ++
> > ++[[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 = "winnow"
> > ++version = "0.4.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
> > ++dependencies = [
> > ++ "memchr",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "zvariant"
> > ++version = "3.12.0"
> > ++dependencies = [
> > ++ "arrayvec",
> > ++ "byteorder",
> > ++ "chrono",
> > ++ "criterion",
> > ++ "enumflags2",
> > ++ "glib",
> > ++ "libc",
> > ++ "rand",
> > ++ "serde",
> > ++ "serde_bytes",
> > ++ "serde_json",
> > ++ "serde_repr",
> > ++ "static_assertions",
> > ++ "time",
> > ++ "url",
> > ++ "uuid",
> > ++ "zvariant_derive",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "zvariant_derive"
> > ++version = "3.12.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
> > ++dependencies = [
> > ++ "proc-macro-crate 1.3.1",
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++ "zvariant_utils",
> > ++]
> > ++
> > ++[[package]]
> > ++name = "zvariant_utils"
> > ++version = "1.0.0"
> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> > ++checksum =
> "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
> > ++dependencies = [
> > ++ "proc-macro2",
> > ++ "quote",
> > ++ "syn 1.0.109",
> > ++]
> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
> > +index 45367729..6981862a 100644
> > +--- a/zvariant/Cargo.toml
> > ++++ b/zvariant/Cargo.toml
> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
> > + serde = { version = "1.0", features = ["derive"] }
> > + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional =
> true }
> > +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
> > ++zvariant_derive = "3.12.0"
> > + serde_bytes = { version = "0.11", optional = true }
> > + static_assertions = "1.1.0"
> > + libc = "0.2.137"
> > +2.34.1
> > +
> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> > new file mode 100644
> > index 0000000000..ab769b3fce
> > --- /dev/null
> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> > @@ -0,0 +1,20 @@
> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus
> wire format"
> > +DESCRIPTION = "This crate provides API for encoding/decoding of data
> to/from D-Bus wire format.\
> > +This binary wire format is simple and very efficient and hence useful
> outside of D-Bus context as well.\
> > +A modified form of this format, GVariant is very commonly used for
> efficient storage of arbitrary \
> > +data and is also supported by this crate."
> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
> > +LICENSE = "MIT"
> > +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
> > +
> > +SRC_URI = " \
> > +    git://
> gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant
> \
> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
> > +"
> > +
> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
> > +S = "${WORKDIR}/zvariant"
> > +
> > +inherit cargo cargo-update-recipe-crates
> > +
> > +require ${BPN}-crates.inc
> > --
> > 2.34.1
> >
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#179092):
> https://lists.openembedded.org/g/openembedded-core/message/179092
> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
>
Alexander Kanavin March 26, 2023, 4:55 p.m. UTC | #3
rust-hello-world is installed into test images, and has a runtime test
to verify that the toolchain produces working binaries:
meta/lib/oeqa/runtime/cases/rust.py

I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
Same as meta-perl/meta-python.
https://github.com/meta-rust/meta-rust

Alex

On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> I thought that would be treated the same as rust-hello-world_git.bb which is in oe-core.
>
> Anyway, I don't mind placing it elsewhere, which layer do you think this recipe would land?
>
>
>
> Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>>
>> I don't think this should be going in oe-core, as it's not actually
>> used by anything, or in any automated tests. But you can place it in a
>> separate layer.
>>
>> Alex
>>
>> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
>> <frederic.martinsons@gmail.com> wrote:
>> >
>> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >
>> > This recipe is for showing an "real world" example of
>> > a crate that depends on some git repositories.
>> >
>> > Usually, this kind of crate is built within a global
>> > workspace (here it is the zbus project) and so
>> > doesn't need a Cargo.lock on its own.
>> >
>> > For the sake of the demonstration, I had to add
>> > a patch for probiding a Cargo.lock and modifying
>> > zvariant_deriver to get it from crates.io instead
>> > of pulling locally with a relative path
>> >
>> > The use case where the crate had some git repository
>> > in dependency is very common for "private" crate that
>> > are not aimed to be published on crate.io.
>> > When the project grow bigger, it is common to have
>> > a bin and multiple lib developped in parallel, and these
>> > libs are surely on a git repostitory.
>> >
>> > Hence the need of this support in oe-core.
>> >
>> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > ---
>> >  .../rust-example/zvariant-crates.inc          |  140 ++
>> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
>> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
>> >  3 files changed, 1409 insertions(+)
>> >  create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
>> >  create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >  create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >
>> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> > new file mode 100644
>> > index 0000000000..297a784661
>> > --- /dev/null
>> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> > @@ -0,0 +1,140 @@
>> > +SRC_URI += " \
>> > +    crate://crates.io/anes/0.1.6 \
>> > +    crate://crates.io/anyhow/1.0.70 \
>> > +    crate://crates.io/arrayvec/0.7.2 \
>> > +    crate://crates.io/atty/0.2.14 \
>> > +    crate://crates.io/autocfg/1.1.0 \
>> > +    crate://crates.io/bitflags/1.3.2 \
>> > +    crate://crates.io/bumpalo/3.12.0 \
>> > +    crate://crates.io/byteorder/1.4.3 \
>> > +    crate://crates.io/cast/0.3.0 \
>> > +    crate://crates.io/cfg-if/1.0.0 \
>> > +    crate://crates.io/chrono/0.4.24 \
>> > +    crate://crates.io/ciborium-io/0.2.0 \
>> > +    crate://crates.io/ciborium-ll/0.2.0 \
>> > +    crate://crates.io/ciborium/0.2.0 \
>> > +    crate://crates.io/clap/3.2.23 \
>> > +    crate://crates.io/clap_lex/0.2.4 \
>> > +    crate://crates.io/criterion-plot/0.5.0 \
>> > +    crate://crates.io/criterion/0.4.0 \
>> > +    crate://crates.io/crossbeam-channel/0.5.7 \
>> > +    crate://crates.io/crossbeam-deque/0.8.3 \
>> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
>> > +    crate://crates.io/crossbeam-utils/0.8.15 \
>> > +    crate://crates.io/either/1.8.1 \
>> > +    crate://crates.io/enumflags2/0.7.5 \
>> > +    crate://crates.io/enumflags2_derive/0.7.4 \
>> > +    crate://crates.io/form_urlencoded/1.1.0 \
>> > +    crate://crates.io/futures-channel/0.3.27 \
>> > +    crate://crates.io/futures-core/0.3.27 \
>> > +    crate://crates.io/futures-executor/0.3.27 \
>> > +    crate://crates.io/futures-macro/0.3.27 \
>> > +    crate://crates.io/futures-task/0.3.27 \
>> > +    crate://crates.io/futures-util/0.3.27 \
>> > +    crate://crates.io/getrandom/0.2.8 \
>> > +    crate://crates.io/half/1.8.2 \
>> > +    crate://crates.io/hashbrown/0.12.3 \
>> > +    crate://crates.io/heck/0.3.3 \
>> > +    crate://crates.io/hermit-abi/0.1.19 \
>> > +    crate://crates.io/hermit-abi/0.2.6 \
>> > +    crate://crates.io/idna/0.3.0 \
>> > +    crate://crates.io/indexmap/1.9.2 \
>> > +    crate://crates.io/itertools/0.10.5 \
>> > +    crate://crates.io/itertools/0.9.0 \
>> > +    crate://crates.io/itoa/1.0.6 \
>> > +    crate://crates.io/js-sys/0.3.61 \
>> > +    crate://crates.io/lazy_static/1.4.0 \
>> > +    crate://crates.io/libc/0.2.140 \
>> > +    crate://crates.io/log/0.4.17 \
>> > +    crate://crates.io/memchr/2.5.0 \
>> > +    crate://crates.io/memoffset/0.8.0 \
>> > +    crate://crates.io/num-integer/0.1.45 \
>> > +    crate://crates.io/num-traits/0.2.15 \
>> > +    crate://crates.io/num_cpus/1.15.0 \
>> > +    crate://crates.io/once_cell/1.17.1 \
>> > +    crate://crates.io/oorandom/11.1.3 \
>> > +    crate://crates.io/os_str_bytes/6.5.0 \
>> > +    crate://crates.io/percent-encoding/2.2.0 \
>> > +    crate://crates.io/pin-project-lite/0.2.9 \
>> > +    crate://crates.io/pin-utils/0.1.0 \
>> > +    crate://crates.io/pkg-config/0.3.26 \
>> > +    crate://crates.io/plotters-backend/0.3.4 \
>> > +    crate://crates.io/plotters-svg/0.3.3 \
>> > +    crate://crates.io/plotters/0.3.4 \
>> > +    crate://crates.io/ppv-lite86/0.2.17 \
>> > +    crate://crates.io/proc-macro-crate/0.1.5 \
>> > +    crate://crates.io/proc-macro-crate/1.3.1 \
>> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
>> > +    crate://crates.io/proc-macro-error/1.0.4 \
>> > +    crate://crates.io/proc-macro2/1.0.53 \
>> > +    crate://crates.io/quote/1.0.26 \
>> > +    crate://crates.io/rand/0.8.5 \
>> > +    crate://crates.io/rand_chacha/0.3.1 \
>> > +    crate://crates.io/rand_core/0.6.4 \
>> > +    crate://crates.io/rayon-core/1.11.0 \
>> > +    crate://crates.io/rayon/1.7.0 \
>> > +    crate://crates.io/regex-syntax/0.6.29 \
>> > +    crate://crates.io/regex/1.7.2 \
>> > +    crate://crates.io/ryu/1.0.13 \
>> > +    crate://crates.io/same-file/1.0.6 \
>> > +    crate://crates.io/scopeguard/1.1.0 \
>> > +    crate://crates.io/serde/1.0.158 \
>> > +    crate://crates.io/serde_bytes/0.11.9 \
>> > +    crate://crates.io/serde_derive/1.0.158 \
>> > +    crate://crates.io/serde_json/1.0.94 \
>> > +    crate://crates.io/serde_repr/0.1.12 \
>> > +    crate://crates.io/slab/0.4.8 \
>> > +    crate://crates.io/static_assertions/1.1.0 \
>> > +    crate://crates.io/strum/0.18.0 \
>> > +    crate://crates.io/strum_macros/0.18.0 \
>> > +    crate://crates.io/syn/1.0.109 \
>> > +    crate://crates.io/syn/2.0.8 \
>> > +    crate://crates.io/system-deps/1.3.2 \
>> > +    crate://crates.io/textwrap/0.16.0 \
>> > +    crate://crates.io/thiserror-impl/1.0.40 \
>> > +    crate://crates.io/thiserror/1.0.40 \
>> > +    crate://crates.io/time-core/0.1.0 \
>> > +    crate://crates.io/time-macros/0.2.8 \
>> > +    crate://crates.io/time/0.3.20 \
>> > +    crate://crates.io/tinytemplate/1.2.1 \
>> > +    crate://crates.io/tinyvec/1.6.0 \
>> > +    crate://crates.io/tinyvec_macros/0.1.1 \
>> > +    crate://crates.io/toml/0.5.11 \
>> > +    crate://crates.io/toml_datetime/0.6.1 \
>> > +    crate://crates.io/toml_edit/0.19.8 \
>> > +    crate://crates.io/unicode-bidi/0.3.13 \
>> > +    crate://crates.io/unicode-ident/1.0.8 \
>> > +    crate://crates.io/unicode-normalization/0.1.22 \
>> > +    crate://crates.io/unicode-segmentation/1.10.1 \
>> > +    crate://crates.io/url/2.3.1 \
>> > +    crate://crates.io/uuid/1.3.0 \
>> > +    crate://crates.io/version-compare/0.0.10 \
>> > +    crate://crates.io/version_check/0.9.4 \
>> > +    crate://crates.io/walkdir/2.3.3 \
>> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
>> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
>> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
>> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
>> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
>> > +    crate://crates.io/wasm-bindgen/0.2.84 \
>> > +    crate://crates.io/web-sys/0.3.61 \
>> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
>> > +    crate://crates.io/winapi-util/0.1.5 \
>> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
>> > +    crate://crates.io/winapi/0.3.9 \
>> > +    crate://crates.io/winnow/0.4.0 \
>> > +    crate://crates.io/zvariant_derive/3.12.0 \
>> > +    crate://crates.io/zvariant_utils/1.0.0 \
>> > +    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
>> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
>> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
>> > +"
>> > +
>> > +SRCREV_FORMAT .= "_glib"
>> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> > +
>> > +SRCREV_FORMAT .= "_glib-sys"
>> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > +
>> > +SRCREV_FORMAT .= "_gobject-sys"
>> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> > new file mode 100644
>> > index 0000000000..638ba3ed4d
>> > --- /dev/null
>> > +++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> > @@ -0,0 +1,1249 @@
>> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
>> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
>> > +Subject: [PATCH] Tweak zvariant cargo config
>> > +
>> > +This library crate is a part of zbus project, and is aimed to
>> > +be published amongst the whole project.
>> > +
>> > +Nevertheless, this recipe is for showing example of real
>> > +code which uses a local registry via git url inside yocto
>> > +environment.
>> > +
>> > +I didn't find a real example of binary crate that uses git
>> > +dependency but it seems to me a very common use case
>> > +when we are working on multiple local crates that are not
>> > +aimed to be published on public registry.
>> > +
>> > +Long story short, this patch add a modified Cargo.toml
>> > +to use the zvariant_derive dependency from crates.io instead
>> > +of zbus local one and a pre generated Cargo.lock in order
>> > +to make cargo patch process inside cargo_common.bbclass work
>> > +
>> > +Upstream-Status: Inappropriate
>> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > +---
>> > + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
>> > + zvariant/Cargo.toml |    2 +-
>> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
>> > + create mode 100644 zvariant/Cargo.lock
>> > +
>> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
>> > +new file mode 100644
>> > +index 00000000..02a83d42
>> > +--- /dev/null
>> > ++++ b/zvariant/Cargo.lock
>> > +@@ -0,0 +1,1198 @@
>> > ++# This file is automatically @generated by Cargo.
>> > ++# It is not intended for manual editing.
>> > ++version = 3
>> > ++
>> > ++[[package]]
>> > ++name = "anes"
>> > ++version = "0.1.6"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
>> > ++
>> > ++[[package]]
>> > ++name = "anyhow"
>> > ++version = "1.0.70"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
>> > ++
>> > ++[[package]]
>> > ++name = "arrayvec"
>> > ++version = "0.7.2"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
>> > ++dependencies = [
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "atty"
>> > ++version = "0.2.14"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
>> > ++dependencies = [
>> > ++ "hermit-abi 0.1.19",
>> > ++ "libc",
>> > ++ "winapi",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "autocfg"
>> > ++version = "1.1.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
>> > ++
>> > ++[[package]]
>> > ++name = "bitflags"
>> > ++version = "1.3.2"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
>> > ++
>> > ++[[package]]
>> > ++name = "bumpalo"
>> > ++version = "3.12.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
>> > ++
>> > ++[[package]]
>> > ++name = "byteorder"
>> > ++version = "1.4.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
>> > ++
>> > ++[[package]]
>> > ++name = "cast"
>> > ++version = "0.3.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
>> > ++
>> > ++[[package]]
>> > ++name = "cfg-if"
>> > ++version = "1.0.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
>> > ++
>> > ++[[package]]
>> > ++name = "chrono"
>> > ++version = "0.4.24"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
>> > ++dependencies = [
>> > ++ "num-integer",
>> > ++ "num-traits",
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "ciborium"
>> > ++version = "0.2.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
>> > ++dependencies = [
>> > ++ "ciborium-io",
>> > ++ "ciborium-ll",
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "ciborium-io"
>> > ++version = "0.2.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
>> > ++
>> > ++[[package]]
>> > ++name = "ciborium-ll"
>> > ++version = "0.2.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
>> > ++dependencies = [
>> > ++ "ciborium-io",
>> > ++ "half",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "clap"
>> > ++version = "3.2.23"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
>> > ++dependencies = [
>> > ++ "bitflags",
>> > ++ "clap_lex",
>> > ++ "indexmap",
>> > ++ "textwrap",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "clap_lex"
>> > ++version = "0.2.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
>> > ++dependencies = [
>> > ++ "os_str_bytes",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "criterion"
>> > ++version = "0.4.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
>> > ++dependencies = [
>> > ++ "anes",
>> > ++ "atty",
>> > ++ "cast",
>> > ++ "ciborium",
>> > ++ "clap",
>> > ++ "criterion-plot",
>> > ++ "itertools 0.10.5",
>> > ++ "lazy_static",
>> > ++ "num-traits",
>> > ++ "oorandom",
>> > ++ "plotters",
>> > ++ "rayon",
>> > ++ "regex",
>> > ++ "serde",
>> > ++ "serde_derive",
>> > ++ "serde_json",
>> > ++ "tinytemplate",
>> > ++ "walkdir",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "criterion-plot"
>> > ++version = "0.5.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
>> > ++dependencies = [
>> > ++ "cast",
>> > ++ "itertools 0.10.5",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "crossbeam-channel"
>> > ++version = "0.5.7"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
>> > ++dependencies = [
>> > ++ "cfg-if",
>> > ++ "crossbeam-utils",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "crossbeam-deque"
>> > ++version = "0.8.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
>> > ++dependencies = [
>> > ++ "cfg-if",
>> > ++ "crossbeam-epoch",
>> > ++ "crossbeam-utils",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "crossbeam-epoch"
>> > ++version = "0.9.14"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
>> > ++dependencies = [
>> > ++ "autocfg",
>> > ++ "cfg-if",
>> > ++ "crossbeam-utils",
>> > ++ "memoffset",
>> > ++ "scopeguard",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "crossbeam-utils"
>> > ++version = "0.8.15"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
>> > ++dependencies = [
>> > ++ "cfg-if",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "either"
>> > ++version = "1.8.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
>> > ++
>> > ++[[package]]
>> > ++name = "enumflags2"
>> > ++version = "0.7.5"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
>> > ++dependencies = [
>> > ++ "enumflags2_derive",
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "enumflags2_derive"
>> > ++version = "0.7.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "form_urlencoded"
>> > ++version = "1.1.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
>> > ++dependencies = [
>> > ++ "percent-encoding",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "futures-channel"
>> > ++version = "0.3.27"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
>> > ++dependencies = [
>> > ++ "futures-core",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "futures-core"
>> > ++version = "0.3.27"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
>> > ++
>> > ++[[package]]
>> > ++name = "futures-executor"
>> > ++version = "0.3.27"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
>> > ++dependencies = [
>> > ++ "futures-core",
>> > ++ "futures-task",
>> > ++ "futures-util",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "futures-macro"
>> > ++version = "0.3.27"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "futures-task"
>> > ++version = "0.3.27"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
>> > ++
>> > ++[[package]]
>> > ++name = "futures-util"
>> > ++version = "0.3.27"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
>> > ++dependencies = [
>> > ++ "futures-core",
>> > ++ "futures-macro",
>> > ++ "futures-task",
>> > ++ "pin-project-lite",
>> > ++ "pin-utils",
>> > ++ "slab",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "getrandom"
>> > ++version = "0.2.8"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
>> > ++dependencies = [
>> > ++ "cfg-if",
>> > ++ "libc",
>> > ++ "wasi",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "glib"
>> > ++version = "0.10.0"
>> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> > ++dependencies = [
>> > ++ "bitflags",
>> > ++ "futures-channel",
>> > ++ "futures-core",
>> > ++ "futures-executor",
>> > ++ "futures-task",
>> > ++ "futures-util",
>> > ++ "glib-macros",
>> > ++ "glib-sys",
>> > ++ "gobject-sys",
>> > ++ "libc",
>> > ++ "once_cell",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "glib-macros"
>> > ++version = "0.10.0"
>> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> > ++dependencies = [
>> > ++ "anyhow",
>> > ++ "heck",
>> > ++ "itertools 0.9.0",
>> > ++ "proc-macro-crate 0.1.5",
>> > ++ "proc-macro-error",
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "glib-sys"
>> > ++version = "0.10.0"
>> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > ++dependencies = [
>> > ++ "libc",
>> > ++ "system-deps",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "gobject-sys"
>> > ++version = "0.10.0"
>> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > ++dependencies = [
>> > ++ "glib-sys",
>> > ++ "libc",
>> > ++ "system-deps",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "half"
>> > ++version = "1.8.2"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
>> > ++
>> > ++[[package]]
>> > ++name = "hashbrown"
>> > ++version = "0.12.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
>> > ++
>> > ++[[package]]
>> > ++name = "heck"
>> > ++version = "0.3.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
>> > ++dependencies = [
>> > ++ "unicode-segmentation",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "hermit-abi"
>> > ++version = "0.1.19"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
>> > ++dependencies = [
>> > ++ "libc",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "hermit-abi"
>> > ++version = "0.2.6"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
>> > ++dependencies = [
>> > ++ "libc",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "idna"
>> > ++version = "0.3.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
>> > ++dependencies = [
>> > ++ "unicode-bidi",
>> > ++ "unicode-normalization",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "indexmap"
>> > ++version = "1.9.2"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
>> > ++dependencies = [
>> > ++ "autocfg",
>> > ++ "hashbrown",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "itertools"
>> > ++version = "0.9.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
>> > ++dependencies = [
>> > ++ "either",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "itertools"
>> > ++version = "0.10.5"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
>> > ++dependencies = [
>> > ++ "either",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "itoa"
>> > ++version = "1.0.6"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
>> > ++
>> > ++[[package]]
>> > ++name = "js-sys"
>> > ++version = "0.3.61"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
>> > ++dependencies = [
>> > ++ "wasm-bindgen",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "lazy_static"
>> > ++version = "1.4.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
>> > ++
>> > ++[[package]]
>> > ++name = "libc"
>> > ++version = "0.2.140"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
>> > ++
>> > ++[[package]]
>> > ++name = "log"
>> > ++version = "0.4.17"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
>> > ++dependencies = [
>> > ++ "cfg-if",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "memchr"
>> > ++version = "2.5.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
>> > ++
>> > ++[[package]]
>> > ++name = "memoffset"
>> > ++version = "0.8.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
>> > ++dependencies = [
>> > ++ "autocfg",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "num-integer"
>> > ++version = "0.1.45"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
>> > ++dependencies = [
>> > ++ "autocfg",
>> > ++ "num-traits",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "num-traits"
>> > ++version = "0.2.15"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
>> > ++dependencies = [
>> > ++ "autocfg",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "num_cpus"
>> > ++version = "1.15.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
>> > ++dependencies = [
>> > ++ "hermit-abi 0.2.6",
>> > ++ "libc",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "once_cell"
>> > ++version = "1.17.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
>> > ++
>> > ++[[package]]
>> > ++name = "oorandom"
>> > ++version = "11.1.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
>> > ++
>> > ++[[package]]
>> > ++name = "os_str_bytes"
>> > ++version = "6.5.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
>> > ++
>> > ++[[package]]
>> > ++name = "percent-encoding"
>> > ++version = "2.2.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
>> > ++
>> > ++[[package]]
>> > ++name = "pin-project-lite"
>> > ++version = "0.2.9"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
>> > ++
>> > ++[[package]]
>> > ++name = "pin-utils"
>> > ++version = "0.1.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
>> > ++
>> > ++[[package]]
>> > ++name = "pkg-config"
>> > ++version = "0.3.26"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
>> > ++
>> > ++[[package]]
>> > ++name = "plotters"
>> > ++version = "0.3.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
>> > ++dependencies = [
>> > ++ "num-traits",
>> > ++ "plotters-backend",
>> > ++ "plotters-svg",
>> > ++ "wasm-bindgen",
>> > ++ "web-sys",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "plotters-backend"
>> > ++version = "0.3.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
>> > ++
>> > ++[[package]]
>> > ++name = "plotters-svg"
>> > ++version = "0.3.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
>> > ++dependencies = [
>> > ++ "plotters-backend",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "ppv-lite86"
>> > ++version = "0.2.17"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
>> > ++
>> > ++[[package]]
>> > ++name = "proc-macro-crate"
>> > ++version = "0.1.5"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
>> > ++dependencies = [
>> > ++ "toml",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "proc-macro-crate"
>> > ++version = "1.3.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
>> > ++dependencies = [
>> > ++ "once_cell",
>> > ++ "toml_edit",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "proc-macro-error"
>> > ++version = "1.0.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
>> > ++dependencies = [
>> > ++ "proc-macro-error-attr",
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++ "version_check",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "proc-macro-error-attr"
>> > ++version = "1.0.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "version_check",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "proc-macro2"
>> > ++version = "1.0.53"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
>> > ++dependencies = [
>> > ++ "unicode-ident",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "quote"
>> > ++version = "1.0.26"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "rand"
>> > ++version = "0.8.5"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
>> > ++dependencies = [
>> > ++ "libc",
>> > ++ "rand_chacha",
>> > ++ "rand_core",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "rand_chacha"
>> > ++version = "0.3.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
>> > ++dependencies = [
>> > ++ "ppv-lite86",
>> > ++ "rand_core",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "rand_core"
>> > ++version = "0.6.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
>> > ++dependencies = [
>> > ++ "getrandom",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "rayon"
>> > ++version = "1.7.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
>> > ++dependencies = [
>> > ++ "either",
>> > ++ "rayon-core",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "rayon-core"
>> > ++version = "1.11.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
>> > ++dependencies = [
>> > ++ "crossbeam-channel",
>> > ++ "crossbeam-deque",
>> > ++ "crossbeam-utils",
>> > ++ "num_cpus",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "regex"
>> > ++version = "1.7.2"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
>> > ++dependencies = [
>> > ++ "regex-syntax",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "regex-syntax"
>> > ++version = "0.6.29"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
>> > ++
>> > ++[[package]]
>> > ++name = "ryu"
>> > ++version = "1.0.13"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
>> > ++
>> > ++[[package]]
>> > ++name = "same-file"
>> > ++version = "1.0.6"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
>> > ++dependencies = [
>> > ++ "winapi-util",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "scopeguard"
>> > ++version = "1.1.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
>> > ++
>> > ++[[package]]
>> > ++name = "serde"
>> > ++version = "1.0.158"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
>> > ++dependencies = [
>> > ++ "serde_derive",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "serde_bytes"
>> > ++version = "0.11.9"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
>> > ++dependencies = [
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "serde_derive"
>> > ++version = "1.0.158"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 2.0.8",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "serde_json"
>> > ++version = "1.0.94"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
>> > ++dependencies = [
>> > ++ "itoa",
>> > ++ "ryu",
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "serde_repr"
>> > ++version = "0.1.12"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 2.0.8",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "slab"
>> > ++version = "0.4.8"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
>> > ++dependencies = [
>> > ++ "autocfg",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "static_assertions"
>> > ++version = "1.1.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
>> > ++
>> > ++[[package]]
>> > ++name = "strum"
>> > ++version = "0.18.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
>> > ++
>> > ++[[package]]
>> > ++name = "strum_macros"
>> > ++version = "0.18.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
>> > ++dependencies = [
>> > ++ "heck",
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "syn"
>> > ++version = "1.0.109"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "unicode-ident",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "syn"
>> > ++version = "2.0.8"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "unicode-ident",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "system-deps"
>> > ++version = "1.3.2"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
>> > ++dependencies = [
>> > ++ "heck",
>> > ++ "pkg-config",
>> > ++ "strum",
>> > ++ "strum_macros",
>> > ++ "thiserror",
>> > ++ "toml",
>> > ++ "version-compare",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "textwrap"
>> > ++version = "0.16.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
>> > ++
>> > ++[[package]]
>> > ++name = "thiserror"
>> > ++version = "1.0.40"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
>> > ++dependencies = [
>> > ++ "thiserror-impl",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "thiserror-impl"
>> > ++version = "1.0.40"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 2.0.8",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "time"
>> > ++version = "0.3.20"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
>> > ++dependencies = [
>> > ++ "serde",
>> > ++ "time-core",
>> > ++ "time-macros",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "time-core"
>> > ++version = "0.1.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
>> > ++
>> > ++[[package]]
>> > ++name = "time-macros"
>> > ++version = "0.2.8"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
>> > ++dependencies = [
>> > ++ "time-core",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "tinytemplate"
>> > ++version = "1.2.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
>> > ++dependencies = [
>> > ++ "serde",
>> > ++ "serde_json",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "tinyvec"
>> > ++version = "1.6.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
>> > ++dependencies = [
>> > ++ "tinyvec_macros",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "tinyvec_macros"
>> > ++version = "0.1.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
>> > ++
>> > ++[[package]]
>> > ++name = "toml"
>> > ++version = "0.5.11"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
>> > ++dependencies = [
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "toml_datetime"
>> > ++version = "0.6.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
>> > ++
>> > ++[[package]]
>> > ++name = "toml_edit"
>> > ++version = "0.19.8"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
>> > ++dependencies = [
>> > ++ "indexmap",
>> > ++ "toml_datetime",
>> > ++ "winnow",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "unicode-bidi"
>> > ++version = "0.3.13"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
>> > ++
>> > ++[[package]]
>> > ++name = "unicode-ident"
>> > ++version = "1.0.8"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
>> > ++
>> > ++[[package]]
>> > ++name = "unicode-normalization"
>> > ++version = "0.1.22"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
>> > ++dependencies = [
>> > ++ "tinyvec",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "unicode-segmentation"
>> > ++version = "1.10.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
>> > ++
>> > ++[[package]]
>> > ++name = "url"
>> > ++version = "2.3.1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
>> > ++dependencies = [
>> > ++ "form_urlencoded",
>> > ++ "idna",
>> > ++ "percent-encoding",
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "uuid"
>> > ++version = "1.3.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
>> > ++dependencies = [
>> > ++ "serde",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "version-compare"
>> > ++version = "0.0.10"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
>> > ++
>> > ++[[package]]
>> > ++name = "version_check"
>> > ++version = "0.9.4"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
>> > ++
>> > ++[[package]]
>> > ++name = "walkdir"
>> > ++version = "2.3.3"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
>> > ++dependencies = [
>> > ++ "same-file",
>> > ++ "winapi-util",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "wasi"
>> > ++version = "0.11.0+wasi-snapshot-preview1"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
>> > ++
>> > ++[[package]]
>> > ++name = "wasm-bindgen"
>> > ++version = "0.2.84"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
>> > ++dependencies = [
>> > ++ "cfg-if",
>> > ++ "wasm-bindgen-macro",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "wasm-bindgen-backend"
>> > ++version = "0.2.84"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
>> > ++dependencies = [
>> > ++ "bumpalo",
>> > ++ "log",
>> > ++ "once_cell",
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++ "wasm-bindgen-shared",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "wasm-bindgen-macro"
>> > ++version = "0.2.84"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
>> > ++dependencies = [
>> > ++ "quote",
>> > ++ "wasm-bindgen-macro-support",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "wasm-bindgen-macro-support"
>> > ++version = "0.2.84"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++ "wasm-bindgen-backend",
>> > ++ "wasm-bindgen-shared",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "wasm-bindgen-shared"
>> > ++version = "0.2.84"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
>> > ++
>> > ++[[package]]
>> > ++name = "web-sys"
>> > ++version = "0.3.61"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
>> > ++dependencies = [
>> > ++ "js-sys",
>> > ++ "wasm-bindgen",
>> > ++]
>> > ++
>> > ++[[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.5"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
>> > ++dependencies = [
>> > ++ "winapi",
>> > ++]
>> > ++
>> > ++[[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 = "winnow"
>> > ++version = "0.4.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
>> > ++dependencies = [
>> > ++ "memchr",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "zvariant"
>> > ++version = "3.12.0"
>> > ++dependencies = [
>> > ++ "arrayvec",
>> > ++ "byteorder",
>> > ++ "chrono",
>> > ++ "criterion",
>> > ++ "enumflags2",
>> > ++ "glib",
>> > ++ "libc",
>> > ++ "rand",
>> > ++ "serde",
>> > ++ "serde_bytes",
>> > ++ "serde_json",
>> > ++ "serde_repr",
>> > ++ "static_assertions",
>> > ++ "time",
>> > ++ "url",
>> > ++ "uuid",
>> > ++ "zvariant_derive",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "zvariant_derive"
>> > ++version = "3.12.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
>> > ++dependencies = [
>> > ++ "proc-macro-crate 1.3.1",
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++ "zvariant_utils",
>> > ++]
>> > ++
>> > ++[[package]]
>> > ++name = "zvariant_utils"
>> > ++version = "1.0.0"
>> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > ++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
>> > ++dependencies = [
>> > ++ "proc-macro2",
>> > ++ "quote",
>> > ++ "syn 1.0.109",
>> > ++]
>> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
>> > +index 45367729..6981862a 100644
>> > +--- a/zvariant/Cargo.toml
>> > ++++ b/zvariant/Cargo.toml
>> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
>> > + serde = { version = "1.0", features = ["derive"] }
>> > + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
>> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
>> > +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
>> > ++zvariant_derive = "3.12.0"
>> > + serde_bytes = { version = "0.11", optional = true }
>> > + static_assertions = "1.1.0"
>> > + libc = "0.2.137"
>> > +2.34.1
>> > +
>> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> > new file mode 100644
>> > index 0000000000..ab769b3fce
>> > --- /dev/null
>> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> > @@ -0,0 +1,20 @@
>> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
>> > +DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
>> > +This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
>> > +A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
>> > +data and is also supported by this crate."
>> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
>> > +LICENSE = "MIT"
>> > +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
>> > +
>> > +SRC_URI = " \
>> > +    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
>> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
>> > +"
>> > +
>> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
>> > +S = "${WORKDIR}/zvariant"
>> > +
>> > +inherit cargo cargo-update-recipe-crates
>> > +
>> > +require ${BPN}-crates.inc
>> > --
>> > 2.34.1
>> >
>> >
>> > -=-=-=-=-=-=-=-=-=-=-=-
>> > Links: You receive all messages sent to this group.
>> > View/Reply Online (#179092): https://lists.openembedded.org/g/openembedded-core/message/179092
>> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
>> > Group Owner: openembedded-core+owner@lists.openembedded.org
>> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
>> > -=-=-=-=-=-=-=-=-=-=-=-
>> >
Frédéric Martinsons March 27, 2023, 4:09 a.m. UTC | #4
Ok, should I work on this cleaning of meta-rust and merging in meta-oe ? or
should I wait for other opinions ?

On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <alex.kanavin@gmail.com>
wrote:

> rust-hello-world is installed into test images, and has a runtime test
> to verify that the toolchain produces working binaries:
> meta/lib/oeqa/runtime/cases/rust.py
>
> I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
> Same as meta-perl/meta-python.
> https://github.com/meta-rust/meta-rust
>
> Alex
>
> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > I thought that would be treated the same as rust-hello-world_git.bb
> which is in oe-core.
> >
> > Anyway, I don't mind placing it elsewhere, which layer do you think this
> recipe would land?
> >
> >
> >
> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com>
> a écrit :
> >>
> >> I don't think this should be going in oe-core, as it's not actually
> >> used by anything, or in any automated tests. But you can place it in a
> >> separate layer.
> >>
> >> Alex
> >>
> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
> >> <frederic.martinsons@gmail.com> wrote:
> >> >
> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> >
> >> > This recipe is for showing an "real world" example of
> >> > a crate that depends on some git repositories.
> >> >
> >> > Usually, this kind of crate is built within a global
> >> > workspace (here it is the zbus project) and so
> >> > doesn't need a Cargo.lock on its own.
> >> >
> >> > For the sake of the demonstration, I had to add
> >> > a patch for probiding a Cargo.lock and modifying
> >> > zvariant_deriver to get it from crates.io instead
> >> > of pulling locally with a relative path
> >> >
> >> > The use case where the crate had some git repository
> >> > in dependency is very common for "private" crate that
> >> > are not aimed to be published on crate.io.
> >> > When the project grow bigger, it is common to have
> >> > a bin and multiple lib developped in parallel, and these
> >> > libs are surely on a git repostitory.
> >> >
> >> > Hence the need of this support in oe-core.
> >> >
> >> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> > ---
> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249
> +++++++++++++++++
> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
> >> >  3 files changed, 1409 insertions(+)
> >> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant-crates.inc
> >> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> >  create mode 100644 meta/recipes-extended/rust-example/
> zvariant_3.12.0.bb
> >> >
> >> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc
> b/meta/recipes-extended/rust-example/zvariant-crates.inc
> >> > new file mode 100644
> >> > index 0000000000..297a784661
> >> > --- /dev/null
> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
> >> > @@ -0,0 +1,140 @@
> >> > +SRC_URI += " \
> >> > +    crate://crates.io/anes/0.1.6 \
> >> > +    crate://crates.io/anyhow/1.0.70 \
> >> > +    crate://crates.io/arrayvec/0.7.2 \
> >> > +    crate://crates.io/atty/0.2.14 \
> >> > +    crate://crates.io/autocfg/1.1.0 \
> >> > +    crate://crates.io/bitflags/1.3.2 \
> >> > +    crate://crates.io/bumpalo/3.12.0 \
> >> > +    crate://crates.io/byteorder/1.4.3 \
> >> > +    crate://crates.io/cast/0.3.0 \
> >> > +    crate://crates.io/cfg-if/1.0.0 \
> >> > +    crate://crates.io/chrono/0.4.24 \
> >> > +    crate://crates.io/ciborium-io/0.2.0 \
> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
> >> > +    crate://crates.io/ciborium/0.2.0 \
> >> > +    crate://crates.io/clap/3.2.23 \
> >> > +    crate://crates.io/clap_lex/0.2.4 \
> >> > +    crate://crates.io/criterion-plot/0.5.0 \
> >> > +    crate://crates.io/criterion/0.4.0 \
> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
> >> > +    crate://crates.io/either/1.8.1 \
> >> > +    crate://crates.io/enumflags2/0.7.5 \
> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
> >> > +    crate://crates.io/futures-channel/0.3.27 \
> >> > +    crate://crates.io/futures-core/0.3.27 \
> >> > +    crate://crates.io/futures-executor/0.3.27 \
> >> > +    crate://crates.io/futures-macro/0.3.27 \
> >> > +    crate://crates.io/futures-task/0.3.27 \
> >> > +    crate://crates.io/futures-util/0.3.27 \
> >> > +    crate://crates.io/getrandom/0.2.8 \
> >> > +    crate://crates.io/half/1.8.2 \
> >> > +    crate://crates.io/hashbrown/0.12.3 \
> >> > +    crate://crates.io/heck/0.3.3 \
> >> > +    crate://crates.io/hermit-abi/0.1.19 \
> >> > +    crate://crates.io/hermit-abi/0.2.6 \
> >> > +    crate://crates.io/idna/0.3.0 \
> >> > +    crate://crates.io/indexmap/1.9.2 \
> >> > +    crate://crates.io/itertools/0.10.5 \
> >> > +    crate://crates.io/itertools/0.9.0 \
> >> > +    crate://crates.io/itoa/1.0.6 \
> >> > +    crate://crates.io/js-sys/0.3.61 \
> >> > +    crate://crates.io/lazy_static/1.4.0 \
> >> > +    crate://crates.io/libc/0.2.140 \
> >> > +    crate://crates.io/log/0.4.17 \
> >> > +    crate://crates.io/memchr/2.5.0 \
> >> > +    crate://crates.io/memoffset/0.8.0 \
> >> > +    crate://crates.io/num-integer/0.1.45 \
> >> > +    crate://crates.io/num-traits/0.2.15 \
> >> > +    crate://crates.io/num_cpus/1.15.0 \
> >> > +    crate://crates.io/once_cell/1.17.1 \
> >> > +    crate://crates.io/oorandom/11.1.3 \
> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
> >> > +    crate://crates.io/percent-encoding/2.2.0 \
> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
> >> > +    crate://crates.io/pin-utils/0.1.0 \
> >> > +    crate://crates.io/pkg-config/0.3.26 \
> >> > +    crate://crates.io/plotters-backend/0.3.4 \
> >> > +    crate://crates.io/plotters-svg/0.3.3 \
> >> > +    crate://crates.io/plotters/0.3.4 \
> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
> >> > +    crate://crates.io/proc-macro2/1.0.53 \
> >> > +    crate://crates.io/quote/1.0.26 \
> >> > +    crate://crates.io/rand/0.8.5 \
> >> > +    crate://crates.io/rand_chacha/0.3.1 \
> >> > +    crate://crates.io/rand_core/0.6.4 \
> >> > +    crate://crates.io/rayon-core/1.11.0 \
> >> > +    crate://crates.io/rayon/1.7.0 \
> >> > +    crate://crates.io/regex-syntax/0.6.29 \
> >> > +    crate://crates.io/regex/1.7.2 \
> >> > +    crate://crates.io/ryu/1.0.13 \
> >> > +    crate://crates.io/same-file/1.0.6 \
> >> > +    crate://crates.io/scopeguard/1.1.0 \
> >> > +    crate://crates.io/serde/1.0.158 \
> >> > +    crate://crates.io/serde_bytes/0.11.9 \
> >> > +    crate://crates.io/serde_derive/1.0.158 \
> >> > +    crate://crates.io/serde_json/1.0.94 \
> >> > +    crate://crates.io/serde_repr/0.1.12 \
> >> > +    crate://crates.io/slab/0.4.8 \
> >> > +    crate://crates.io/static_assertions/1.1.0 \
> >> > +    crate://crates.io/strum/0.18.0 \
> >> > +    crate://crates.io/strum_macros/0.18.0 \
> >> > +    crate://crates.io/syn/1.0.109 \
> >> > +    crate://crates.io/syn/2.0.8 \
> >> > +    crate://crates.io/system-deps/1.3.2 \
> >> > +    crate://crates.io/textwrap/0.16.0 \
> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
> >> > +    crate://crates.io/thiserror/1.0.40 \
> >> > +    crate://crates.io/time-core/0.1.0 \
> >> > +    crate://crates.io/time-macros/0.2.8 \
> >> > +    crate://crates.io/time/0.3.20 \
> >> > +    crate://crates.io/tinytemplate/1.2.1 \
> >> > +    crate://crates.io/tinyvec/1.6.0 \
> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
> >> > +    crate://crates.io/toml/0.5.11 \
> >> > +    crate://crates.io/toml_datetime/0.6.1 \
> >> > +    crate://crates.io/toml_edit/0.19.8 \
> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
> >> > +    crate://crates.io/unicode-ident/1.0.8 \
> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
> >> > +    crate://crates.io/url/2.3.1 \
> >> > +    crate://crates.io/uuid/1.3.0 \
> >> > +    crate://crates.io/version-compare/0.0.10 \
> >> > +    crate://crates.io/version_check/0.9.4 \
> >> > +    crate://crates.io/walkdir/2.3.3 \
> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
> >> > +    crate://crates.io/web-sys/0.3.61 \
> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
> >> > +    crate://crates.io/winapi-util/0.1.5 \
> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
> >> > +    crate://crates.io/winapi/0.3.9 \
> >> > +    crate://crates.io/winnow/0.4.0 \
> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
> >> > +    git://
> github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib
> \
> >> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys
> \
> >> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys
> \
> >> > +"
> >> > +
> >> > +SRCREV_FORMAT .= "_glib"
> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
> >> > +
> >> > +SRCREV_FORMAT .= "_glib-sys"
> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > +
> >> > +SRCREV_FORMAT .= "_gobject-sys"
> >> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > diff --git
> a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> > new file mode 100644
> >> > index 0000000000..638ba3ed4d
> >> > --- /dev/null
> >> > +++
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> > @@ -0,0 +1,1249 @@
> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00
> 2001
> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
> >> > +Subject: [PATCH] Tweak zvariant cargo config
> >> > +
> >> > +This library crate is a part of zbus project, and is aimed to
> >> > +be published amongst the whole project.
> >> > +
> >> > +Nevertheless, this recipe is for showing example of real
> >> > +code which uses a local registry via git url inside yocto
> >> > +environment.
> >> > +
> >> > +I didn't find a real example of binary crate that uses git
> >> > +dependency but it seems to me a very common use case
> >> > +when we are working on multiple local crates that are not
> >> > +aimed to be published on public registry.
> >> > +
> >> > +Long story short, this patch add a modified Cargo.toml
> >> > +to use the zvariant_derive dependency from crates.io instead
> >> > +of zbus local one and a pre generated Cargo.lock in order
> >> > +to make cargo patch process inside cargo_common.bbclass work
> >> > +
> >> > +Upstream-Status: Inappropriate
> >> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> > +---
> >> > + zvariant/Cargo.lock | 1198
> +++++++++++++++++++++++++++++++++++++++++++
> >> > + zvariant/Cargo.toml |    2 +-
> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
> >> > + create mode 100644 zvariant/Cargo.lock
> >> > +
> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
> >> > +new file mode 100644
> >> > +index 00000000..02a83d42
> >> > +--- /dev/null
> >> > ++++ b/zvariant/Cargo.lock
> >> > +@@ -0,0 +1,1198 @@
> >> > ++# This file is automatically @generated by Cargo.
> >> > ++# It is not intended for manual editing.
> >> > ++version = 3
> >> > ++
> >> > ++[[package]]
> >> > ++name = "anes"
> >> > ++version = "0.1.6"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "anyhow"
> >> > ++version = "1.0.70"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "arrayvec"
> >> > ++version = "0.7.2"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
> >> > ++dependencies = [
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "atty"
> >> > ++version = "0.2.14"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
> >> > ++dependencies = [
> >> > ++ "hermit-abi 0.1.19",
> >> > ++ "libc",
> >> > ++ "winapi",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "autocfg"
> >> > ++version = "1.1.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "bitflags"
> >> > ++version = "1.3.2"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "bumpalo"
> >> > ++version = "3.12.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "byteorder"
> >> > ++version = "1.4.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "cast"
> >> > ++version = "0.3.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "cfg-if"
> >> > ++version = "1.0.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "chrono"
> >> > ++version = "0.4.24"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
> >> > ++dependencies = [
> >> > ++ "num-integer",
> >> > ++ "num-traits",
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "ciborium"
> >> > ++version = "0.2.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
> >> > ++dependencies = [
> >> > ++ "ciborium-io",
> >> > ++ "ciborium-ll",
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "ciborium-io"
> >> > ++version = "0.2.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "ciborium-ll"
> >> > ++version = "0.2.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
> >> > ++dependencies = [
> >> > ++ "ciborium-io",
> >> > ++ "half",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "clap"
> >> > ++version = "3.2.23"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
> >> > ++dependencies = [
> >> > ++ "bitflags",
> >> > ++ "clap_lex",
> >> > ++ "indexmap",
> >> > ++ "textwrap",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "clap_lex"
> >> > ++version = "0.2.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
> >> > ++dependencies = [
> >> > ++ "os_str_bytes",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "criterion"
> >> > ++version = "0.4.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
> >> > ++dependencies = [
> >> > ++ "anes",
> >> > ++ "atty",
> >> > ++ "cast",
> >> > ++ "ciborium",
> >> > ++ "clap",
> >> > ++ "criterion-plot",
> >> > ++ "itertools 0.10.5",
> >> > ++ "lazy_static",
> >> > ++ "num-traits",
> >> > ++ "oorandom",
> >> > ++ "plotters",
> >> > ++ "rayon",
> >> > ++ "regex",
> >> > ++ "serde",
> >> > ++ "serde_derive",
> >> > ++ "serde_json",
> >> > ++ "tinytemplate",
> >> > ++ "walkdir",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "criterion-plot"
> >> > ++version = "0.5.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
> >> > ++dependencies = [
> >> > ++ "cast",
> >> > ++ "itertools 0.10.5",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "crossbeam-channel"
> >> > ++version = "0.5.7"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
> >> > ++dependencies = [
> >> > ++ "cfg-if",
> >> > ++ "crossbeam-utils",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "crossbeam-deque"
> >> > ++version = "0.8.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
> >> > ++dependencies = [
> >> > ++ "cfg-if",
> >> > ++ "crossbeam-epoch",
> >> > ++ "crossbeam-utils",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "crossbeam-epoch"
> >> > ++version = "0.9.14"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
> >> > ++dependencies = [
> >> > ++ "autocfg",
> >> > ++ "cfg-if",
> >> > ++ "crossbeam-utils",
> >> > ++ "memoffset",
> >> > ++ "scopeguard",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "crossbeam-utils"
> >> > ++version = "0.8.15"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
> >> > ++dependencies = [
> >> > ++ "cfg-if",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "either"
> >> > ++version = "1.8.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "enumflags2"
> >> > ++version = "0.7.5"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
> >> > ++dependencies = [
> >> > ++ "enumflags2_derive",
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "enumflags2_derive"
> >> > ++version = "0.7.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "form_urlencoded"
> >> > ++version = "1.1.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
> >> > ++dependencies = [
> >> > ++ "percent-encoding",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "futures-channel"
> >> > ++version = "0.3.27"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
> >> > ++dependencies = [
> >> > ++ "futures-core",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "futures-core"
> >> > ++version = "0.3.27"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "futures-executor"
> >> > ++version = "0.3.27"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
> >> > ++dependencies = [
> >> > ++ "futures-core",
> >> > ++ "futures-task",
> >> > ++ "futures-util",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "futures-macro"
> >> > ++version = "0.3.27"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "futures-task"
> >> > ++version = "0.3.27"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "futures-util"
> >> > ++version = "0.3.27"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
> >> > ++dependencies = [
> >> > ++ "futures-core",
> >> > ++ "futures-macro",
> >> > ++ "futures-task",
> >> > ++ "pin-project-lite",
> >> > ++ "pin-utils",
> >> > ++ "slab",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "getrandom"
> >> > ++version = "0.2.8"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
> >> > ++dependencies = [
> >> > ++ "cfg-if",
> >> > ++ "libc",
> >> > ++ "wasi",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "glib"
> >> > ++version = "0.10.0"
> >> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> >> > ++dependencies = [
> >> > ++ "bitflags",
> >> > ++ "futures-channel",
> >> > ++ "futures-core",
> >> > ++ "futures-executor",
> >> > ++ "futures-task",
> >> > ++ "futures-util",
> >> > ++ "glib-macros",
> >> > ++ "glib-sys",
> >> > ++ "gobject-sys",
> >> > ++ "libc",
> >> > ++ "once_cell",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "glib-macros"
> >> > ++version = "0.10.0"
> >> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> >> > ++dependencies = [
> >> > ++ "anyhow",
> >> > ++ "heck",
> >> > ++ "itertools 0.9.0",
> >> > ++ "proc-macro-crate 0.1.5",
> >> > ++ "proc-macro-error",
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "glib-sys"
> >> > ++version = "0.10.0"
> >> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > ++dependencies = [
> >> > ++ "libc",
> >> > ++ "system-deps",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "gobject-sys"
> >> > ++version = "0.10.0"
> >> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > ++dependencies = [
> >> > ++ "glib-sys",
> >> > ++ "libc",
> >> > ++ "system-deps",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "half"
> >> > ++version = "1.8.2"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "hashbrown"
> >> > ++version = "0.12.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "heck"
> >> > ++version = "0.3.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
> >> > ++dependencies = [
> >> > ++ "unicode-segmentation",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "hermit-abi"
> >> > ++version = "0.1.19"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
> >> > ++dependencies = [
> >> > ++ "libc",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "hermit-abi"
> >> > ++version = "0.2.6"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
> >> > ++dependencies = [
> >> > ++ "libc",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "idna"
> >> > ++version = "0.3.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
> >> > ++dependencies = [
> >> > ++ "unicode-bidi",
> >> > ++ "unicode-normalization",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "indexmap"
> >> > ++version = "1.9.2"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
> >> > ++dependencies = [
> >> > ++ "autocfg",
> >> > ++ "hashbrown",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "itertools"
> >> > ++version = "0.9.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
> >> > ++dependencies = [
> >> > ++ "either",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "itertools"
> >> > ++version = "0.10.5"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
> >> > ++dependencies = [
> >> > ++ "either",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "itoa"
> >> > ++version = "1.0.6"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "js-sys"
> >> > ++version = "0.3.61"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
> >> > ++dependencies = [
> >> > ++ "wasm-bindgen",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "lazy_static"
> >> > ++version = "1.4.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "libc"
> >> > ++version = "0.2.140"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "log"
> >> > ++version = "0.4.17"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
> >> > ++dependencies = [
> >> > ++ "cfg-if",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "memchr"
> >> > ++version = "2.5.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "memoffset"
> >> > ++version = "0.8.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
> >> > ++dependencies = [
> >> > ++ "autocfg",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "num-integer"
> >> > ++version = "0.1.45"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
> >> > ++dependencies = [
> >> > ++ "autocfg",
> >> > ++ "num-traits",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "num-traits"
> >> > ++version = "0.2.15"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
> >> > ++dependencies = [
> >> > ++ "autocfg",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "num_cpus"
> >> > ++version = "1.15.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
> >> > ++dependencies = [
> >> > ++ "hermit-abi 0.2.6",
> >> > ++ "libc",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "once_cell"
> >> > ++version = "1.17.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "oorandom"
> >> > ++version = "11.1.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "os_str_bytes"
> >> > ++version = "6.5.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "percent-encoding"
> >> > ++version = "2.2.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "pin-project-lite"
> >> > ++version = "0.2.9"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "pin-utils"
> >> > ++version = "0.1.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "pkg-config"
> >> > ++version = "0.3.26"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "plotters"
> >> > ++version = "0.3.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
> >> > ++dependencies = [
> >> > ++ "num-traits",
> >> > ++ "plotters-backend",
> >> > ++ "plotters-svg",
> >> > ++ "wasm-bindgen",
> >> > ++ "web-sys",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "plotters-backend"
> >> > ++version = "0.3.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "plotters-svg"
> >> > ++version = "0.3.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
> >> > ++dependencies = [
> >> > ++ "plotters-backend",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "ppv-lite86"
> >> > ++version = "0.2.17"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "proc-macro-crate"
> >> > ++version = "0.1.5"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
> >> > ++dependencies = [
> >> > ++ "toml",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "proc-macro-crate"
> >> > ++version = "1.3.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
> >> > ++dependencies = [
> >> > ++ "once_cell",
> >> > ++ "toml_edit",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "proc-macro-error"
> >> > ++version = "1.0.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
> >> > ++dependencies = [
> >> > ++ "proc-macro-error-attr",
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++ "version_check",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "proc-macro-error-attr"
> >> > ++version = "1.0.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "version_check",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "proc-macro2"
> >> > ++version = "1.0.53"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
> >> > ++dependencies = [
> >> > ++ "unicode-ident",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "quote"
> >> > ++version = "1.0.26"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "rand"
> >> > ++version = "0.8.5"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
> >> > ++dependencies = [
> >> > ++ "libc",
> >> > ++ "rand_chacha",
> >> > ++ "rand_core",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "rand_chacha"
> >> > ++version = "0.3.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
> >> > ++dependencies = [
> >> > ++ "ppv-lite86",
> >> > ++ "rand_core",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "rand_core"
> >> > ++version = "0.6.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
> >> > ++dependencies = [
> >> > ++ "getrandom",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "rayon"
> >> > ++version = "1.7.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
> >> > ++dependencies = [
> >> > ++ "either",
> >> > ++ "rayon-core",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "rayon-core"
> >> > ++version = "1.11.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
> >> > ++dependencies = [
> >> > ++ "crossbeam-channel",
> >> > ++ "crossbeam-deque",
> >> > ++ "crossbeam-utils",
> >> > ++ "num_cpus",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "regex"
> >> > ++version = "1.7.2"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
> >> > ++dependencies = [
> >> > ++ "regex-syntax",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "regex-syntax"
> >> > ++version = "0.6.29"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "ryu"
> >> > ++version = "1.0.13"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "same-file"
> >> > ++version = "1.0.6"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
> >> > ++dependencies = [
> >> > ++ "winapi-util",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "scopeguard"
> >> > ++version = "1.1.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "serde"
> >> > ++version = "1.0.158"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
> >> > ++dependencies = [
> >> > ++ "serde_derive",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "serde_bytes"
> >> > ++version = "0.11.9"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
> >> > ++dependencies = [
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "serde_derive"
> >> > ++version = "1.0.158"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 2.0.8",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "serde_json"
> >> > ++version = "1.0.94"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
> >> > ++dependencies = [
> >> > ++ "itoa",
> >> > ++ "ryu",
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "serde_repr"
> >> > ++version = "0.1.12"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 2.0.8",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "slab"
> >> > ++version = "0.4.8"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
> >> > ++dependencies = [
> >> > ++ "autocfg",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "static_assertions"
> >> > ++version = "1.1.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "strum"
> >> > ++version = "0.18.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "strum_macros"
> >> > ++version = "0.18.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
> >> > ++dependencies = [
> >> > ++ "heck",
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "syn"
> >> > ++version = "1.0.109"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "unicode-ident",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "syn"
> >> > ++version = "2.0.8"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "unicode-ident",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "system-deps"
> >> > ++version = "1.3.2"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
> >> > ++dependencies = [
> >> > ++ "heck",
> >> > ++ "pkg-config",
> >> > ++ "strum",
> >> > ++ "strum_macros",
> >> > ++ "thiserror",
> >> > ++ "toml",
> >> > ++ "version-compare",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "textwrap"
> >> > ++version = "0.16.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "thiserror"
> >> > ++version = "1.0.40"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
> >> > ++dependencies = [
> >> > ++ "thiserror-impl",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "thiserror-impl"
> >> > ++version = "1.0.40"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 2.0.8",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "time"
> >> > ++version = "0.3.20"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
> >> > ++dependencies = [
> >> > ++ "serde",
> >> > ++ "time-core",
> >> > ++ "time-macros",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "time-core"
> >> > ++version = "0.1.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "time-macros"
> >> > ++version = "0.2.8"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
> >> > ++dependencies = [
> >> > ++ "time-core",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "tinytemplate"
> >> > ++version = "1.2.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
> >> > ++dependencies = [
> >> > ++ "serde",
> >> > ++ "serde_json",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "tinyvec"
> >> > ++version = "1.6.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
> >> > ++dependencies = [
> >> > ++ "tinyvec_macros",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "tinyvec_macros"
> >> > ++version = "0.1.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "toml"
> >> > ++version = "0.5.11"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
> >> > ++dependencies = [
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "toml_datetime"
> >> > ++version = "0.6.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "toml_edit"
> >> > ++version = "0.19.8"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
> >> > ++dependencies = [
> >> > ++ "indexmap",
> >> > ++ "toml_datetime",
> >> > ++ "winnow",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "unicode-bidi"
> >> > ++version = "0.3.13"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "unicode-ident"
> >> > ++version = "1.0.8"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "unicode-normalization"
> >> > ++version = "0.1.22"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
> >> > ++dependencies = [
> >> > ++ "tinyvec",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "unicode-segmentation"
> >> > ++version = "1.10.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "url"
> >> > ++version = "2.3.1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
> >> > ++dependencies = [
> >> > ++ "form_urlencoded",
> >> > ++ "idna",
> >> > ++ "percent-encoding",
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "uuid"
> >> > ++version = "1.3.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
> >> > ++dependencies = [
> >> > ++ "serde",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "version-compare"
> >> > ++version = "0.0.10"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "version_check"
> >> > ++version = "0.9.4"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "walkdir"
> >> > ++version = "2.3.3"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
> >> > ++dependencies = [
> >> > ++ "same-file",
> >> > ++ "winapi-util",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "wasi"
> >> > ++version = "0.11.0+wasi-snapshot-preview1"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "wasm-bindgen"
> >> > ++version = "0.2.84"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
> >> > ++dependencies = [
> >> > ++ "cfg-if",
> >> > ++ "wasm-bindgen-macro",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "wasm-bindgen-backend"
> >> > ++version = "0.2.84"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
> >> > ++dependencies = [
> >> > ++ "bumpalo",
> >> > ++ "log",
> >> > ++ "once_cell",
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++ "wasm-bindgen-shared",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "wasm-bindgen-macro"
> >> > ++version = "0.2.84"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
> >> > ++dependencies = [
> >> > ++ "quote",
> >> > ++ "wasm-bindgen-macro-support",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "wasm-bindgen-macro-support"
> >> > ++version = "0.2.84"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++ "wasm-bindgen-backend",
> >> > ++ "wasm-bindgen-shared",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "wasm-bindgen-shared"
> >> > ++version = "0.2.84"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
> >> > ++
> >> > ++[[package]]
> >> > ++name = "web-sys"
> >> > ++version = "0.3.61"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
> >> > ++dependencies = [
> >> > ++ "js-sys",
> >> > ++ "wasm-bindgen",
> >> > ++]
> >> > ++
> >> > ++[[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.5"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
> >> > ++dependencies = [
> >> > ++ "winapi",
> >> > ++]
> >> > ++
> >> > ++[[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 = "winnow"
> >> > ++version = "0.4.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
> >> > ++dependencies = [
> >> > ++ "memchr",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "zvariant"
> >> > ++version = "3.12.0"
> >> > ++dependencies = [
> >> > ++ "arrayvec",
> >> > ++ "byteorder",
> >> > ++ "chrono",
> >> > ++ "criterion",
> >> > ++ "enumflags2",
> >> > ++ "glib",
> >> > ++ "libc",
> >> > ++ "rand",
> >> > ++ "serde",
> >> > ++ "serde_bytes",
> >> > ++ "serde_json",
> >> > ++ "serde_repr",
> >> > ++ "static_assertions",
> >> > ++ "time",
> >> > ++ "url",
> >> > ++ "uuid",
> >> > ++ "zvariant_derive",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "zvariant_derive"
> >> > ++version = "3.12.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
> >> > ++dependencies = [
> >> > ++ "proc-macro-crate 1.3.1",
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++ "zvariant_utils",
> >> > ++]
> >> > ++
> >> > ++[[package]]
> >> > ++name = "zvariant_utils"
> >> > ++version = "1.0.0"
> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> > ++checksum =
> "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
> >> > ++dependencies = [
> >> > ++ "proc-macro2",
> >> > ++ "quote",
> >> > ++ "syn 1.0.109",
> >> > ++]
> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
> >> > +index 45367729..6981862a 100644
> >> > +--- a/zvariant/Cargo.toml
> >> > ++++ b/zvariant/Cargo.toml
> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
> >> > + serde = { version = "1.0", features = ["derive"] }
> >> > + arrayvec = { version = "0.7.2", features = ["serde"], optional =
> true }
> >> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional =
> true }
> >> > +-zvariant_derive = { version = "=3.12.0", path =
> "../zvariant_derive" }
> >> > ++zvariant_derive = "3.12.0"
> >> > + serde_bytes = { version = "0.11", optional = true }
> >> > + static_assertions = "1.1.0"
> >> > + libc = "0.2.137"
> >> > +2.34.1
> >> > +
> >> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> > new file mode 100644
> >> > index 0000000000..ab769b3fce
> >> > --- /dev/null
> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> > @@ -0,0 +1,20 @@
> >> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus
> wire format"
> >> > +DESCRIPTION = "This crate provides API for encoding/decoding of data
> to/from D-Bus wire format.\
> >> > +This binary wire format is simple and very efficient and hence
> useful outside of D-Bus context as well.\
> >> > +A modified form of this format, GVariant is very commonly used for
> efficient storage of arbitrary \
> >> > +data and is also supported by this crate."
> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
> >> > +LICENSE = "MIT"
> >> > +LIC_FILES_CHKSUM =
> "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
> >> > +
> >> > +SRC_URI = " \
> >> > +    git://
> gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant
> \
> >> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
> >> > +"
> >> > +
> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
> >> > +S = "${WORKDIR}/zvariant"
> >> > +
> >> > +inherit cargo cargo-update-recipe-crates
> >> > +
> >> > +require ${BPN}-crates.inc
> >> > --
> >> > 2.34.1
> >> >
> >> >
> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> > Links: You receive all messages sent to this group.
> >> > View/Reply Online (#179092):
> https://lists.openembedded.org/g/openembedded-core/message/179092
> >> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub
> [alex.kanavin@gmail.com]
> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> >
>
Alexander Kanavin March 27, 2023, 6:40 a.m. UTC | #5
You could meanwhile review meta-rust, and see what is useful and what
is obsolete perhaps? I see it still carries toolchain recipes for
example, I have no idea why.

Alex

On Mon, 27 Mar 2023 at 06:09, Frédéric Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> Ok, should I work on this cleaning of meta-rust and merging in meta-oe ? or should I wait for other opinions ?
>
> On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <alex.kanavin@gmail.com> wrote:
>>
>> rust-hello-world is installed into test images, and has a runtime test
>> to verify that the toolchain produces working binaries:
>> meta/lib/oeqa/runtime/cases/rust.py
>>
>> I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
>> Same as meta-perl/meta-python.
>> https://github.com/meta-rust/meta-rust
>>
>> Alex
>>
>> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
>> <frederic.martinsons@gmail.com> wrote:
>> >
>> > I thought that would be treated the same as rust-hello-world_git.bb which is in oe-core.
>> >
>> > Anyway, I don't mind placing it elsewhere, which layer do you think this recipe would land?
>> >
>> >
>> >
>> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>> >>
>> >> I don't think this should be going in oe-core, as it's not actually
>> >> used by anything, or in any automated tests. But you can place it in a
>> >> separate layer.
>> >>
>> >> Alex
>> >>
>> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
>> >> <frederic.martinsons@gmail.com> wrote:
>> >> >
>> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> >
>> >> > This recipe is for showing an "real world" example of
>> >> > a crate that depends on some git repositories.
>> >> >
>> >> > Usually, this kind of crate is built within a global
>> >> > workspace (here it is the zbus project) and so
>> >> > doesn't need a Cargo.lock on its own.
>> >> >
>> >> > For the sake of the demonstration, I had to add
>> >> > a patch for probiding a Cargo.lock and modifying
>> >> > zvariant_deriver to get it from crates.io instead
>> >> > of pulling locally with a relative path
>> >> >
>> >> > The use case where the crate had some git repository
>> >> > in dependency is very common for "private" crate that
>> >> > are not aimed to be published on crate.io.
>> >> > When the project grow bigger, it is common to have
>> >> > a bin and multiple lib developped in parallel, and these
>> >> > libs are surely on a git repostitory.
>> >> >
>> >> > Hence the need of this support in oe-core.
>> >> >
>> >> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > ---
>> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
>> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
>> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
>> >> >  3 files changed, 1409 insertions(+)
>> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
>> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >> >
>> >> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> >> > new file mode 100644
>> >> > index 0000000000..297a784661
>> >> > --- /dev/null
>> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> >> > @@ -0,0 +1,140 @@
>> >> > +SRC_URI += " \
>> >> > +    crate://crates.io/anes/0.1.6 \
>> >> > +    crate://crates.io/anyhow/1.0.70 \
>> >> > +    crate://crates.io/arrayvec/0.7.2 \
>> >> > +    crate://crates.io/atty/0.2.14 \
>> >> > +    crate://crates.io/autocfg/1.1.0 \
>> >> > +    crate://crates.io/bitflags/1.3.2 \
>> >> > +    crate://crates.io/bumpalo/3.12.0 \
>> >> > +    crate://crates.io/byteorder/1.4.3 \
>> >> > +    crate://crates.io/cast/0.3.0 \
>> >> > +    crate://crates.io/cfg-if/1.0.0 \
>> >> > +    crate://crates.io/chrono/0.4.24 \
>> >> > +    crate://crates.io/ciborium-io/0.2.0 \
>> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
>> >> > +    crate://crates.io/ciborium/0.2.0 \
>> >> > +    crate://crates.io/clap/3.2.23 \
>> >> > +    crate://crates.io/clap_lex/0.2.4 \
>> >> > +    crate://crates.io/criterion-plot/0.5.0 \
>> >> > +    crate://crates.io/criterion/0.4.0 \
>> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
>> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
>> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
>> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
>> >> > +    crate://crates.io/either/1.8.1 \
>> >> > +    crate://crates.io/enumflags2/0.7.5 \
>> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
>> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
>> >> > +    crate://crates.io/futures-channel/0.3.27 \
>> >> > +    crate://crates.io/futures-core/0.3.27 \
>> >> > +    crate://crates.io/futures-executor/0.3.27 \
>> >> > +    crate://crates.io/futures-macro/0.3.27 \
>> >> > +    crate://crates.io/futures-task/0.3.27 \
>> >> > +    crate://crates.io/futures-util/0.3.27 \
>> >> > +    crate://crates.io/getrandom/0.2.8 \
>> >> > +    crate://crates.io/half/1.8.2 \
>> >> > +    crate://crates.io/hashbrown/0.12.3 \
>> >> > +    crate://crates.io/heck/0.3.3 \
>> >> > +    crate://crates.io/hermit-abi/0.1.19 \
>> >> > +    crate://crates.io/hermit-abi/0.2.6 \
>> >> > +    crate://crates.io/idna/0.3.0 \
>> >> > +    crate://crates.io/indexmap/1.9.2 \
>> >> > +    crate://crates.io/itertools/0.10.5 \
>> >> > +    crate://crates.io/itertools/0.9.0 \
>> >> > +    crate://crates.io/itoa/1.0.6 \
>> >> > +    crate://crates.io/js-sys/0.3.61 \
>> >> > +    crate://crates.io/lazy_static/1.4.0 \
>> >> > +    crate://crates.io/libc/0.2.140 \
>> >> > +    crate://crates.io/log/0.4.17 \
>> >> > +    crate://crates.io/memchr/2.5.0 \
>> >> > +    crate://crates.io/memoffset/0.8.0 \
>> >> > +    crate://crates.io/num-integer/0.1.45 \
>> >> > +    crate://crates.io/num-traits/0.2.15 \
>> >> > +    crate://crates.io/num_cpus/1.15.0 \
>> >> > +    crate://crates.io/once_cell/1.17.1 \
>> >> > +    crate://crates.io/oorandom/11.1.3 \
>> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
>> >> > +    crate://crates.io/percent-encoding/2.2.0 \
>> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
>> >> > +    crate://crates.io/pin-utils/0.1.0 \
>> >> > +    crate://crates.io/pkg-config/0.3.26 \
>> >> > +    crate://crates.io/plotters-backend/0.3.4 \
>> >> > +    crate://crates.io/plotters-svg/0.3.3 \
>> >> > +    crate://crates.io/plotters/0.3.4 \
>> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
>> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
>> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
>> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
>> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
>> >> > +    crate://crates.io/proc-macro2/1.0.53 \
>> >> > +    crate://crates.io/quote/1.0.26 \
>> >> > +    crate://crates.io/rand/0.8.5 \
>> >> > +    crate://crates.io/rand_chacha/0.3.1 \
>> >> > +    crate://crates.io/rand_core/0.6.4 \
>> >> > +    crate://crates.io/rayon-core/1.11.0 \
>> >> > +    crate://crates.io/rayon/1.7.0 \
>> >> > +    crate://crates.io/regex-syntax/0.6.29 \
>> >> > +    crate://crates.io/regex/1.7.2 \
>> >> > +    crate://crates.io/ryu/1.0.13 \
>> >> > +    crate://crates.io/same-file/1.0.6 \
>> >> > +    crate://crates.io/scopeguard/1.1.0 \
>> >> > +    crate://crates.io/serde/1.0.158 \
>> >> > +    crate://crates.io/serde_bytes/0.11.9 \
>> >> > +    crate://crates.io/serde_derive/1.0.158 \
>> >> > +    crate://crates.io/serde_json/1.0.94 \
>> >> > +    crate://crates.io/serde_repr/0.1.12 \
>> >> > +    crate://crates.io/slab/0.4.8 \
>> >> > +    crate://crates.io/static_assertions/1.1.0 \
>> >> > +    crate://crates.io/strum/0.18.0 \
>> >> > +    crate://crates.io/strum_macros/0.18.0 \
>> >> > +    crate://crates.io/syn/1.0.109 \
>> >> > +    crate://crates.io/syn/2.0.8 \
>> >> > +    crate://crates.io/system-deps/1.3.2 \
>> >> > +    crate://crates.io/textwrap/0.16.0 \
>> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
>> >> > +    crate://crates.io/thiserror/1.0.40 \
>> >> > +    crate://crates.io/time-core/0.1.0 \
>> >> > +    crate://crates.io/time-macros/0.2.8 \
>> >> > +    crate://crates.io/time/0.3.20 \
>> >> > +    crate://crates.io/tinytemplate/1.2.1 \
>> >> > +    crate://crates.io/tinyvec/1.6.0 \
>> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
>> >> > +    crate://crates.io/toml/0.5.11 \
>> >> > +    crate://crates.io/toml_datetime/0.6.1 \
>> >> > +    crate://crates.io/toml_edit/0.19.8 \
>> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
>> >> > +    crate://crates.io/unicode-ident/1.0.8 \
>> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
>> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
>> >> > +    crate://crates.io/url/2.3.1 \
>> >> > +    crate://crates.io/uuid/1.3.0 \
>> >> > +    crate://crates.io/version-compare/0.0.10 \
>> >> > +    crate://crates.io/version_check/0.9.4 \
>> >> > +    crate://crates.io/walkdir/2.3.3 \
>> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
>> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
>> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
>> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
>> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
>> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
>> >> > +    crate://crates.io/web-sys/0.3.61 \
>> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
>> >> > +    crate://crates.io/winapi-util/0.1.5 \
>> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
>> >> > +    crate://crates.io/winapi/0.3.9 \
>> >> > +    crate://crates.io/winnow/0.4.0 \
>> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
>> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
>> >> > +    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
>> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
>> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
>> >> > +"
>> >> > +
>> >> > +SRCREV_FORMAT .= "_glib"
>> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> >> > +
>> >> > +SRCREV_FORMAT .= "_glib-sys"
>> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > +
>> >> > +SRCREV_FORMAT .= "_gobject-sys"
>> >> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >> > new file mode 100644
>> >> > index 0000000000..638ba3ed4d
>> >> > --- /dev/null
>> >> > +++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >> > @@ -0,0 +1,1249 @@
>> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
>> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
>> >> > +Subject: [PATCH] Tweak zvariant cargo config
>> >> > +
>> >> > +This library crate is a part of zbus project, and is aimed to
>> >> > +be published amongst the whole project.
>> >> > +
>> >> > +Nevertheless, this recipe is for showing example of real
>> >> > +code which uses a local registry via git url inside yocto
>> >> > +environment.
>> >> > +
>> >> > +I didn't find a real example of binary crate that uses git
>> >> > +dependency but it seems to me a very common use case
>> >> > +when we are working on multiple local crates that are not
>> >> > +aimed to be published on public registry.
>> >> > +
>> >> > +Long story short, this patch add a modified Cargo.toml
>> >> > +to use the zvariant_derive dependency from crates.io instead
>> >> > +of zbus local one and a pre generated Cargo.lock in order
>> >> > +to make cargo patch process inside cargo_common.bbclass work
>> >> > +
>> >> > +Upstream-Status: Inappropriate
>> >> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > +---
>> >> > + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
>> >> > + zvariant/Cargo.toml |    2 +-
>> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
>> >> > + create mode 100644 zvariant/Cargo.lock
>> >> > +
>> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
>> >> > +new file mode 100644
>> >> > +index 00000000..02a83d42
>> >> > +--- /dev/null
>> >> > ++++ b/zvariant/Cargo.lock
>> >> > +@@ -0,0 +1,1198 @@
>> >> > ++# This file is automatically @generated by Cargo.
>> >> > ++# It is not intended for manual editing.
>> >> > ++version = 3
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "anes"
>> >> > ++version = "0.1.6"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "anyhow"
>> >> > ++version = "1.0.70"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "arrayvec"
>> >> > ++version = "0.7.2"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
>> >> > ++dependencies = [
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "atty"
>> >> > ++version = "0.2.14"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
>> >> > ++dependencies = [
>> >> > ++ "hermit-abi 0.1.19",
>> >> > ++ "libc",
>> >> > ++ "winapi",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "autocfg"
>> >> > ++version = "1.1.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "bitflags"
>> >> > ++version = "1.3.2"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "bumpalo"
>> >> > ++version = "3.12.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "byteorder"
>> >> > ++version = "1.4.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "cast"
>> >> > ++version = "0.3.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "cfg-if"
>> >> > ++version = "1.0.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "chrono"
>> >> > ++version = "0.4.24"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
>> >> > ++dependencies = [
>> >> > ++ "num-integer",
>> >> > ++ "num-traits",
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "ciborium"
>> >> > ++version = "0.2.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
>> >> > ++dependencies = [
>> >> > ++ "ciborium-io",
>> >> > ++ "ciborium-ll",
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "ciborium-io"
>> >> > ++version = "0.2.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "ciborium-ll"
>> >> > ++version = "0.2.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
>> >> > ++dependencies = [
>> >> > ++ "ciborium-io",
>> >> > ++ "half",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "clap"
>> >> > ++version = "3.2.23"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
>> >> > ++dependencies = [
>> >> > ++ "bitflags",
>> >> > ++ "clap_lex",
>> >> > ++ "indexmap",
>> >> > ++ "textwrap",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "clap_lex"
>> >> > ++version = "0.2.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
>> >> > ++dependencies = [
>> >> > ++ "os_str_bytes",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "criterion"
>> >> > ++version = "0.4.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
>> >> > ++dependencies = [
>> >> > ++ "anes",
>> >> > ++ "atty",
>> >> > ++ "cast",
>> >> > ++ "ciborium",
>> >> > ++ "clap",
>> >> > ++ "criterion-plot",
>> >> > ++ "itertools 0.10.5",
>> >> > ++ "lazy_static",
>> >> > ++ "num-traits",
>> >> > ++ "oorandom",
>> >> > ++ "plotters",
>> >> > ++ "rayon",
>> >> > ++ "regex",
>> >> > ++ "serde",
>> >> > ++ "serde_derive",
>> >> > ++ "serde_json",
>> >> > ++ "tinytemplate",
>> >> > ++ "walkdir",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "criterion-plot"
>> >> > ++version = "0.5.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
>> >> > ++dependencies = [
>> >> > ++ "cast",
>> >> > ++ "itertools 0.10.5",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "crossbeam-channel"
>> >> > ++version = "0.5.7"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
>> >> > ++dependencies = [
>> >> > ++ "cfg-if",
>> >> > ++ "crossbeam-utils",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "crossbeam-deque"
>> >> > ++version = "0.8.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
>> >> > ++dependencies = [
>> >> > ++ "cfg-if",
>> >> > ++ "crossbeam-epoch",
>> >> > ++ "crossbeam-utils",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "crossbeam-epoch"
>> >> > ++version = "0.9.14"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
>> >> > ++dependencies = [
>> >> > ++ "autocfg",
>> >> > ++ "cfg-if",
>> >> > ++ "crossbeam-utils",
>> >> > ++ "memoffset",
>> >> > ++ "scopeguard",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "crossbeam-utils"
>> >> > ++version = "0.8.15"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
>> >> > ++dependencies = [
>> >> > ++ "cfg-if",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "either"
>> >> > ++version = "1.8.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "enumflags2"
>> >> > ++version = "0.7.5"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
>> >> > ++dependencies = [
>> >> > ++ "enumflags2_derive",
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "enumflags2_derive"
>> >> > ++version = "0.7.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "form_urlencoded"
>> >> > ++version = "1.1.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
>> >> > ++dependencies = [
>> >> > ++ "percent-encoding",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "futures-channel"
>> >> > ++version = "0.3.27"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
>> >> > ++dependencies = [
>> >> > ++ "futures-core",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "futures-core"
>> >> > ++version = "0.3.27"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "futures-executor"
>> >> > ++version = "0.3.27"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
>> >> > ++dependencies = [
>> >> > ++ "futures-core",
>> >> > ++ "futures-task",
>> >> > ++ "futures-util",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "futures-macro"
>> >> > ++version = "0.3.27"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "futures-task"
>> >> > ++version = "0.3.27"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "futures-util"
>> >> > ++version = "0.3.27"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
>> >> > ++dependencies = [
>> >> > ++ "futures-core",
>> >> > ++ "futures-macro",
>> >> > ++ "futures-task",
>> >> > ++ "pin-project-lite",
>> >> > ++ "pin-utils",
>> >> > ++ "slab",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "getrandom"
>> >> > ++version = "0.2.8"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
>> >> > ++dependencies = [
>> >> > ++ "cfg-if",
>> >> > ++ "libc",
>> >> > ++ "wasi",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "glib"
>> >> > ++version = "0.10.0"
>> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> >> > ++dependencies = [
>> >> > ++ "bitflags",
>> >> > ++ "futures-channel",
>> >> > ++ "futures-core",
>> >> > ++ "futures-executor",
>> >> > ++ "futures-task",
>> >> > ++ "futures-util",
>> >> > ++ "glib-macros",
>> >> > ++ "glib-sys",
>> >> > ++ "gobject-sys",
>> >> > ++ "libc",
>> >> > ++ "once_cell",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "glib-macros"
>> >> > ++version = "0.10.0"
>> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> >> > ++dependencies = [
>> >> > ++ "anyhow",
>> >> > ++ "heck",
>> >> > ++ "itertools 0.9.0",
>> >> > ++ "proc-macro-crate 0.1.5",
>> >> > ++ "proc-macro-error",
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "glib-sys"
>> >> > ++version = "0.10.0"
>> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > ++dependencies = [
>> >> > ++ "libc",
>> >> > ++ "system-deps",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "gobject-sys"
>> >> > ++version = "0.10.0"
>> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > ++dependencies = [
>> >> > ++ "glib-sys",
>> >> > ++ "libc",
>> >> > ++ "system-deps",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "half"
>> >> > ++version = "1.8.2"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "hashbrown"
>> >> > ++version = "0.12.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "heck"
>> >> > ++version = "0.3.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
>> >> > ++dependencies = [
>> >> > ++ "unicode-segmentation",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "hermit-abi"
>> >> > ++version = "0.1.19"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
>> >> > ++dependencies = [
>> >> > ++ "libc",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "hermit-abi"
>> >> > ++version = "0.2.6"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
>> >> > ++dependencies = [
>> >> > ++ "libc",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "idna"
>> >> > ++version = "0.3.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
>> >> > ++dependencies = [
>> >> > ++ "unicode-bidi",
>> >> > ++ "unicode-normalization",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "indexmap"
>> >> > ++version = "1.9.2"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
>> >> > ++dependencies = [
>> >> > ++ "autocfg",
>> >> > ++ "hashbrown",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "itertools"
>> >> > ++version = "0.9.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
>> >> > ++dependencies = [
>> >> > ++ "either",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "itertools"
>> >> > ++version = "0.10.5"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
>> >> > ++dependencies = [
>> >> > ++ "either",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "itoa"
>> >> > ++version = "1.0.6"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "js-sys"
>> >> > ++version = "0.3.61"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
>> >> > ++dependencies = [
>> >> > ++ "wasm-bindgen",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "lazy_static"
>> >> > ++version = "1.4.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "libc"
>> >> > ++version = "0.2.140"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "log"
>> >> > ++version = "0.4.17"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
>> >> > ++dependencies = [
>> >> > ++ "cfg-if",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "memchr"
>> >> > ++version = "2.5.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "memoffset"
>> >> > ++version = "0.8.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
>> >> > ++dependencies = [
>> >> > ++ "autocfg",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "num-integer"
>> >> > ++version = "0.1.45"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
>> >> > ++dependencies = [
>> >> > ++ "autocfg",
>> >> > ++ "num-traits",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "num-traits"
>> >> > ++version = "0.2.15"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
>> >> > ++dependencies = [
>> >> > ++ "autocfg",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "num_cpus"
>> >> > ++version = "1.15.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
>> >> > ++dependencies = [
>> >> > ++ "hermit-abi 0.2.6",
>> >> > ++ "libc",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "once_cell"
>> >> > ++version = "1.17.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "oorandom"
>> >> > ++version = "11.1.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "os_str_bytes"
>> >> > ++version = "6.5.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "percent-encoding"
>> >> > ++version = "2.2.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "pin-project-lite"
>> >> > ++version = "0.2.9"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "pin-utils"
>> >> > ++version = "0.1.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "pkg-config"
>> >> > ++version = "0.3.26"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "plotters"
>> >> > ++version = "0.3.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
>> >> > ++dependencies = [
>> >> > ++ "num-traits",
>> >> > ++ "plotters-backend",
>> >> > ++ "plotters-svg",
>> >> > ++ "wasm-bindgen",
>> >> > ++ "web-sys",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "plotters-backend"
>> >> > ++version = "0.3.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "plotters-svg"
>> >> > ++version = "0.3.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
>> >> > ++dependencies = [
>> >> > ++ "plotters-backend",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "ppv-lite86"
>> >> > ++version = "0.2.17"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "proc-macro-crate"
>> >> > ++version = "0.1.5"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
>> >> > ++dependencies = [
>> >> > ++ "toml",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "proc-macro-crate"
>> >> > ++version = "1.3.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
>> >> > ++dependencies = [
>> >> > ++ "once_cell",
>> >> > ++ "toml_edit",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "proc-macro-error"
>> >> > ++version = "1.0.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro-error-attr",
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++ "version_check",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "proc-macro-error-attr"
>> >> > ++version = "1.0.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "version_check",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "proc-macro2"
>> >> > ++version = "1.0.53"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
>> >> > ++dependencies = [
>> >> > ++ "unicode-ident",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "quote"
>> >> > ++version = "1.0.26"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "rand"
>> >> > ++version = "0.8.5"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
>> >> > ++dependencies = [
>> >> > ++ "libc",
>> >> > ++ "rand_chacha",
>> >> > ++ "rand_core",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "rand_chacha"
>> >> > ++version = "0.3.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
>> >> > ++dependencies = [
>> >> > ++ "ppv-lite86",
>> >> > ++ "rand_core",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "rand_core"
>> >> > ++version = "0.6.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
>> >> > ++dependencies = [
>> >> > ++ "getrandom",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "rayon"
>> >> > ++version = "1.7.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
>> >> > ++dependencies = [
>> >> > ++ "either",
>> >> > ++ "rayon-core",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "rayon-core"
>> >> > ++version = "1.11.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
>> >> > ++dependencies = [
>> >> > ++ "crossbeam-channel",
>> >> > ++ "crossbeam-deque",
>> >> > ++ "crossbeam-utils",
>> >> > ++ "num_cpus",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "regex"
>> >> > ++version = "1.7.2"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
>> >> > ++dependencies = [
>> >> > ++ "regex-syntax",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "regex-syntax"
>> >> > ++version = "0.6.29"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "ryu"
>> >> > ++version = "1.0.13"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "same-file"
>> >> > ++version = "1.0.6"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
>> >> > ++dependencies = [
>> >> > ++ "winapi-util",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "scopeguard"
>> >> > ++version = "1.1.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "serde"
>> >> > ++version = "1.0.158"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
>> >> > ++dependencies = [
>> >> > ++ "serde_derive",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "serde_bytes"
>> >> > ++version = "0.11.9"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
>> >> > ++dependencies = [
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "serde_derive"
>> >> > ++version = "1.0.158"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 2.0.8",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "serde_json"
>> >> > ++version = "1.0.94"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
>> >> > ++dependencies = [
>> >> > ++ "itoa",
>> >> > ++ "ryu",
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "serde_repr"
>> >> > ++version = "0.1.12"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 2.0.8",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "slab"
>> >> > ++version = "0.4.8"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
>> >> > ++dependencies = [
>> >> > ++ "autocfg",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "static_assertions"
>> >> > ++version = "1.1.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "strum"
>> >> > ++version = "0.18.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "strum_macros"
>> >> > ++version = "0.18.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
>> >> > ++dependencies = [
>> >> > ++ "heck",
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "syn"
>> >> > ++version = "1.0.109"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "unicode-ident",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "syn"
>> >> > ++version = "2.0.8"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "unicode-ident",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "system-deps"
>> >> > ++version = "1.3.2"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
>> >> > ++dependencies = [
>> >> > ++ "heck",
>> >> > ++ "pkg-config",
>> >> > ++ "strum",
>> >> > ++ "strum_macros",
>> >> > ++ "thiserror",
>> >> > ++ "toml",
>> >> > ++ "version-compare",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "textwrap"
>> >> > ++version = "0.16.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "thiserror"
>> >> > ++version = "1.0.40"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
>> >> > ++dependencies = [
>> >> > ++ "thiserror-impl",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "thiserror-impl"
>> >> > ++version = "1.0.40"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 2.0.8",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "time"
>> >> > ++version = "0.3.20"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
>> >> > ++dependencies = [
>> >> > ++ "serde",
>> >> > ++ "time-core",
>> >> > ++ "time-macros",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "time-core"
>> >> > ++version = "0.1.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "time-macros"
>> >> > ++version = "0.2.8"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
>> >> > ++dependencies = [
>> >> > ++ "time-core",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "tinytemplate"
>> >> > ++version = "1.2.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
>> >> > ++dependencies = [
>> >> > ++ "serde",
>> >> > ++ "serde_json",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "tinyvec"
>> >> > ++version = "1.6.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
>> >> > ++dependencies = [
>> >> > ++ "tinyvec_macros",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "tinyvec_macros"
>> >> > ++version = "0.1.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "toml"
>> >> > ++version = "0.5.11"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
>> >> > ++dependencies = [
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "toml_datetime"
>> >> > ++version = "0.6.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "toml_edit"
>> >> > ++version = "0.19.8"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
>> >> > ++dependencies = [
>> >> > ++ "indexmap",
>> >> > ++ "toml_datetime",
>> >> > ++ "winnow",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "unicode-bidi"
>> >> > ++version = "0.3.13"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "unicode-ident"
>> >> > ++version = "1.0.8"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "unicode-normalization"
>> >> > ++version = "0.1.22"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
>> >> > ++dependencies = [
>> >> > ++ "tinyvec",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "unicode-segmentation"
>> >> > ++version = "1.10.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "url"
>> >> > ++version = "2.3.1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
>> >> > ++dependencies = [
>> >> > ++ "form_urlencoded",
>> >> > ++ "idna",
>> >> > ++ "percent-encoding",
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "uuid"
>> >> > ++version = "1.3.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
>> >> > ++dependencies = [
>> >> > ++ "serde",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "version-compare"
>> >> > ++version = "0.0.10"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "version_check"
>> >> > ++version = "0.9.4"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "walkdir"
>> >> > ++version = "2.3.3"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
>> >> > ++dependencies = [
>> >> > ++ "same-file",
>> >> > ++ "winapi-util",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "wasi"
>> >> > ++version = "0.11.0+wasi-snapshot-preview1"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "wasm-bindgen"
>> >> > ++version = "0.2.84"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
>> >> > ++dependencies = [
>> >> > ++ "cfg-if",
>> >> > ++ "wasm-bindgen-macro",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "wasm-bindgen-backend"
>> >> > ++version = "0.2.84"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
>> >> > ++dependencies = [
>> >> > ++ "bumpalo",
>> >> > ++ "log",
>> >> > ++ "once_cell",
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++ "wasm-bindgen-shared",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "wasm-bindgen-macro"
>> >> > ++version = "0.2.84"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
>> >> > ++dependencies = [
>> >> > ++ "quote",
>> >> > ++ "wasm-bindgen-macro-support",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "wasm-bindgen-macro-support"
>> >> > ++version = "0.2.84"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++ "wasm-bindgen-backend",
>> >> > ++ "wasm-bindgen-shared",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "wasm-bindgen-shared"
>> >> > ++version = "0.2.84"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "web-sys"
>> >> > ++version = "0.3.61"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
>> >> > ++dependencies = [
>> >> > ++ "js-sys",
>> >> > ++ "wasm-bindgen",
>> >> > ++]
>> >> > ++
>> >> > ++[[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.5"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
>> >> > ++dependencies = [
>> >> > ++ "winapi",
>> >> > ++]
>> >> > ++
>> >> > ++[[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 = "winnow"
>> >> > ++version = "0.4.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
>> >> > ++dependencies = [
>> >> > ++ "memchr",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "zvariant"
>> >> > ++version = "3.12.0"
>> >> > ++dependencies = [
>> >> > ++ "arrayvec",
>> >> > ++ "byteorder",
>> >> > ++ "chrono",
>> >> > ++ "criterion",
>> >> > ++ "enumflags2",
>> >> > ++ "glib",
>> >> > ++ "libc",
>> >> > ++ "rand",
>> >> > ++ "serde",
>> >> > ++ "serde_bytes",
>> >> > ++ "serde_json",
>> >> > ++ "serde_repr",
>> >> > ++ "static_assertions",
>> >> > ++ "time",
>> >> > ++ "url",
>> >> > ++ "uuid",
>> >> > ++ "zvariant_derive",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "zvariant_derive"
>> >> > ++version = "3.12.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro-crate 1.3.1",
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++ "zvariant_utils",
>> >> > ++]
>> >> > ++
>> >> > ++[[package]]
>> >> > ++name = "zvariant_utils"
>> >> > ++version = "1.0.0"
>> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > ++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
>> >> > ++dependencies = [
>> >> > ++ "proc-macro2",
>> >> > ++ "quote",
>> >> > ++ "syn 1.0.109",
>> >> > ++]
>> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
>> >> > +index 45367729..6981862a 100644
>> >> > +--- a/zvariant/Cargo.toml
>> >> > ++++ b/zvariant/Cargo.toml
>> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
>> >> > + serde = { version = "1.0", features = ["derive"] }
>> >> > + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
>> >> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
>> >> > +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
>> >> > ++zvariant_derive = "3.12.0"
>> >> > + serde_bytes = { version = "0.11", optional = true }
>> >> > + static_assertions = "1.1.0"
>> >> > + libc = "0.2.137"
>> >> > +2.34.1
>> >> > +
>> >> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >> > new file mode 100644
>> >> > index 0000000000..ab769b3fce
>> >> > --- /dev/null
>> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >> > @@ -0,0 +1,20 @@
>> >> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
>> >> > +DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
>> >> > +This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
>> >> > +A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
>> >> > +data and is also supported by this crate."
>> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
>> >> > +LICENSE = "MIT"
>> >> > +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
>> >> > +
>> >> > +SRC_URI = " \
>> >> > +    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
>> >> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
>> >> > +"
>> >> > +
>> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
>> >> > +S = "${WORKDIR}/zvariant"
>> >> > +
>> >> > +inherit cargo cargo-update-recipe-crates
>> >> > +
>> >> > +require ${BPN}-crates.inc
>> >> > --
>> >> > 2.34.1
>> >> >
>> >> >
>> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> >> > Links: You receive all messages sent to this group.
>> >> > View/Reply Online (#179092): https://lists.openembedded.org/g/openembedded-core/message/179092
>> >> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
>> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
>> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
>> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> >> >
Alex Kiernan March 27, 2023, 8:18 a.m. UTC | #6
If you're on master I don't think there's anything useful in meta-rust
- its providing toolchains for older branches.

On Mon, Mar 27, 2023 at 7:40 AM Alexander Kanavin
<alex.kanavin@gmail.com> wrote:
>
> You could meanwhile review meta-rust, and see what is useful and what
> is obsolete perhaps? I see it still carries toolchain recipes for
> example, I have no idea why.
>
> Alex
>
> On Mon, 27 Mar 2023 at 06:09, Frédéric Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > Ok, should I work on this cleaning of meta-rust and merging in meta-oe ? or should I wait for other opinions ?
> >
> > On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <alex.kanavin@gmail.com> wrote:
> >>
> >> rust-hello-world is installed into test images, and has a runtime test
> >> to verify that the toolchain produces working binaries:
> >> meta/lib/oeqa/runtime/cases/rust.py
> >>
> >> I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
> >> Same as meta-perl/meta-python.
> >> https://github.com/meta-rust/meta-rust
> >>
> >> Alex
> >>
> >> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
> >> <frederic.martinsons@gmail.com> wrote:
> >> >
> >> > I thought that would be treated the same as rust-hello-world_git.bb which is in oe-core.
> >> >
> >> > Anyway, I don't mind placing it elsewhere, which layer do you think this recipe would land?
> >> >
> >> >
> >> >
> >> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
> >> >>
> >> >> I don't think this should be going in oe-core, as it's not actually
> >> >> used by anything, or in any automated tests. But you can place it in a
> >> >> separate layer.
> >> >>
> >> >> Alex
> >> >>
> >> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
> >> >> <frederic.martinsons@gmail.com> wrote:
> >> >> >
> >> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> >> >
> >> >> > This recipe is for showing an "real world" example of
> >> >> > a crate that depends on some git repositories.
> >> >> >
> >> >> > Usually, this kind of crate is built within a global
> >> >> > workspace (here it is the zbus project) and so
> >> >> > doesn't need a Cargo.lock on its own.
> >> >> >
> >> >> > For the sake of the demonstration, I had to add
> >> >> > a patch for probiding a Cargo.lock and modifying
> >> >> > zvariant_deriver to get it from crates.io instead
> >> >> > of pulling locally with a relative path
> >> >> >
> >> >> > The use case where the crate had some git repository
> >> >> > in dependency is very common for "private" crate that
> >> >> > are not aimed to be published on crate.io.
> >> >> > When the project grow bigger, it is common to have
> >> >> > a bin and multiple lib developped in parallel, and these
> >> >> > libs are surely on a git repostitory.
> >> >> >
> >> >> > Hence the need of this support in oe-core.
> >> >> >
> >> >> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> >> > ---
> >> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
> >> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
> >> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
> >> >> >  3 files changed, 1409 insertions(+)
> >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
> >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> >> >
> >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
> >> >> > new file mode 100644
> >> >> > index 0000000000..297a784661
> >> >> > --- /dev/null
> >> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
> >> >> > @@ -0,0 +1,140 @@
> >> >> > +SRC_URI += " \
> >> >> > +    crate://crates.io/anes/0.1.6 \
> >> >> > +    crate://crates.io/anyhow/1.0.70 \
> >> >> > +    crate://crates.io/arrayvec/0.7.2 \
> >> >> > +    crate://crates.io/atty/0.2.14 \
> >> >> > +    crate://crates.io/autocfg/1.1.0 \
> >> >> > +    crate://crates.io/bitflags/1.3.2 \
> >> >> > +    crate://crates.io/bumpalo/3.12.0 \
> >> >> > +    crate://crates.io/byteorder/1.4.3 \
> >> >> > +    crate://crates.io/cast/0.3.0 \
> >> >> > +    crate://crates.io/cfg-if/1.0.0 \
> >> >> > +    crate://crates.io/chrono/0.4.24 \
> >> >> > +    crate://crates.io/ciborium-io/0.2.0 \
> >> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
> >> >> > +    crate://crates.io/ciborium/0.2.0 \
> >> >> > +    crate://crates.io/clap/3.2.23 \
> >> >> > +    crate://crates.io/clap_lex/0.2.4 \
> >> >> > +    crate://crates.io/criterion-plot/0.5.0 \
> >> >> > +    crate://crates.io/criterion/0.4.0 \
> >> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
> >> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
> >> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
> >> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
> >> >> > +    crate://crates.io/either/1.8.1 \
> >> >> > +    crate://crates.io/enumflags2/0.7.5 \
> >> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
> >> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
> >> >> > +    crate://crates.io/futures-channel/0.3.27 \
> >> >> > +    crate://crates.io/futures-core/0.3.27 \
> >> >> > +    crate://crates.io/futures-executor/0.3.27 \
> >> >> > +    crate://crates.io/futures-macro/0.3.27 \
> >> >> > +    crate://crates.io/futures-task/0.3.27 \
> >> >> > +    crate://crates.io/futures-util/0.3.27 \
> >> >> > +    crate://crates.io/getrandom/0.2.8 \
> >> >> > +    crate://crates.io/half/1.8.2 \
> >> >> > +    crate://crates.io/hashbrown/0.12.3 \
> >> >> > +    crate://crates.io/heck/0.3.3 \
> >> >> > +    crate://crates.io/hermit-abi/0.1.19 \
> >> >> > +    crate://crates.io/hermit-abi/0.2.6 \
> >> >> > +    crate://crates.io/idna/0.3.0 \
> >> >> > +    crate://crates.io/indexmap/1.9.2 \
> >> >> > +    crate://crates.io/itertools/0.10.5 \
> >> >> > +    crate://crates.io/itertools/0.9.0 \
> >> >> > +    crate://crates.io/itoa/1.0.6 \
> >> >> > +    crate://crates.io/js-sys/0.3.61 \
> >> >> > +    crate://crates.io/lazy_static/1.4.0 \
> >> >> > +    crate://crates.io/libc/0.2.140 \
> >> >> > +    crate://crates.io/log/0.4.17 \
> >> >> > +    crate://crates.io/memchr/2.5.0 \
> >> >> > +    crate://crates.io/memoffset/0.8.0 \
> >> >> > +    crate://crates.io/num-integer/0.1.45 \
> >> >> > +    crate://crates.io/num-traits/0.2.15 \
> >> >> > +    crate://crates.io/num_cpus/1.15.0 \
> >> >> > +    crate://crates.io/once_cell/1.17.1 \
> >> >> > +    crate://crates.io/oorandom/11.1.3 \
> >> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
> >> >> > +    crate://crates.io/percent-encoding/2.2.0 \
> >> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
> >> >> > +    crate://crates.io/pin-utils/0.1.0 \
> >> >> > +    crate://crates.io/pkg-config/0.3.26 \
> >> >> > +    crate://crates.io/plotters-backend/0.3.4 \
> >> >> > +    crate://crates.io/plotters-svg/0.3.3 \
> >> >> > +    crate://crates.io/plotters/0.3.4 \
> >> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
> >> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
> >> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
> >> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
> >> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
> >> >> > +    crate://crates.io/proc-macro2/1.0.53 \
> >> >> > +    crate://crates.io/quote/1.0.26 \
> >> >> > +    crate://crates.io/rand/0.8.5 \
> >> >> > +    crate://crates.io/rand_chacha/0.3.1 \
> >> >> > +    crate://crates.io/rand_core/0.6.4 \
> >> >> > +    crate://crates.io/rayon-core/1.11.0 \
> >> >> > +    crate://crates.io/rayon/1.7.0 \
> >> >> > +    crate://crates.io/regex-syntax/0.6.29 \
> >> >> > +    crate://crates.io/regex/1.7.2 \
> >> >> > +    crate://crates.io/ryu/1.0.13 \
> >> >> > +    crate://crates.io/same-file/1.0.6 \
> >> >> > +    crate://crates.io/scopeguard/1.1.0 \
> >> >> > +    crate://crates.io/serde/1.0.158 \
> >> >> > +    crate://crates.io/serde_bytes/0.11.9 \
> >> >> > +    crate://crates.io/serde_derive/1.0.158 \
> >> >> > +    crate://crates.io/serde_json/1.0.94 \
> >> >> > +    crate://crates.io/serde_repr/0.1.12 \
> >> >> > +    crate://crates.io/slab/0.4.8 \
> >> >> > +    crate://crates.io/static_assertions/1.1.0 \
> >> >> > +    crate://crates.io/strum/0.18.0 \
> >> >> > +    crate://crates.io/strum_macros/0.18.0 \
> >> >> > +    crate://crates.io/syn/1.0.109 \
> >> >> > +    crate://crates.io/syn/2.0.8 \
> >> >> > +    crate://crates.io/system-deps/1.3.2 \
> >> >> > +    crate://crates.io/textwrap/0.16.0 \
> >> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
> >> >> > +    crate://crates.io/thiserror/1.0.40 \
> >> >> > +    crate://crates.io/time-core/0.1.0 \
> >> >> > +    crate://crates.io/time-macros/0.2.8 \
> >> >> > +    crate://crates.io/time/0.3.20 \
> >> >> > +    crate://crates.io/tinytemplate/1.2.1 \
> >> >> > +    crate://crates.io/tinyvec/1.6.0 \
> >> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
> >> >> > +    crate://crates.io/toml/0.5.11 \
> >> >> > +    crate://crates.io/toml_datetime/0.6.1 \
> >> >> > +    crate://crates.io/toml_edit/0.19.8 \
> >> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
> >> >> > +    crate://crates.io/unicode-ident/1.0.8 \
> >> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
> >> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
> >> >> > +    crate://crates.io/url/2.3.1 \
> >> >> > +    crate://crates.io/uuid/1.3.0 \
> >> >> > +    crate://crates.io/version-compare/0.0.10 \
> >> >> > +    crate://crates.io/version_check/0.9.4 \
> >> >> > +    crate://crates.io/walkdir/2.3.3 \
> >> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
> >> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
> >> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
> >> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
> >> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
> >> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
> >> >> > +    crate://crates.io/web-sys/0.3.61 \
> >> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
> >> >> > +    crate://crates.io/winapi-util/0.1.5 \
> >> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
> >> >> > +    crate://crates.io/winapi/0.3.9 \
> >> >> > +    crate://crates.io/winnow/0.4.0 \
> >> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
> >> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
> >> >> > +    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
> >> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
> >> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
> >> >> > +"
> >> >> > +
> >> >> > +SRCREV_FORMAT .= "_glib"
> >> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
> >> >> > +
> >> >> > +SRCREV_FORMAT .= "_glib-sys"
> >> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> >> > +
> >> >> > +SRCREV_FORMAT .= "_gobject-sys"
> >> >> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> >> > new file mode 100644
> >> >> > index 0000000000..638ba3ed4d
> >> >> > --- /dev/null
> >> >> > +++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> >> > @@ -0,0 +1,1249 @@
> >> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
> >> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
> >> >> > +Subject: [PATCH] Tweak zvariant cargo config
> >> >> > +
> >> >> > +This library crate is a part of zbus project, and is aimed to
> >> >> > +be published amongst the whole project.
> >> >> > +
> >> >> > +Nevertheless, this recipe is for showing example of real
> >> >> > +code which uses a local registry via git url inside yocto
> >> >> > +environment.
> >> >> > +
> >> >> > +I didn't find a real example of binary crate that uses git
> >> >> > +dependency but it seems to me a very common use case
> >> >> > +when we are working on multiple local crates that are not
> >> >> > +aimed to be published on public registry.
> >> >> > +
> >> >> > +Long story short, this patch add a modified Cargo.toml
> >> >> > +to use the zvariant_derive dependency from crates.io instead
> >> >> > +of zbus local one and a pre generated Cargo.lock in order
> >> >> > +to make cargo patch process inside cargo_common.bbclass work
> >> >> > +
> >> >> > +Upstream-Status: Inappropriate
> >> >> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> >> > +---
> >> >> > + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
> >> >> > + zvariant/Cargo.toml |    2 +-
> >> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
> >> >> > + create mode 100644 zvariant/Cargo.lock
> >> >> > +
> >> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
> >> >> > +new file mode 100644
> >> >> > +index 00000000..02a83d42
> >> >> > +--- /dev/null
> >> >> > ++++ b/zvariant/Cargo.lock
> >> >> > +@@ -0,0 +1,1198 @@
> >> >> > ++# This file is automatically @generated by Cargo.
> >> >> > ++# It is not intended for manual editing.
> >> >> > ++version = 3
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "anes"
> >> >> > ++version = "0.1.6"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "anyhow"
> >> >> > ++version = "1.0.70"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "arrayvec"
> >> >> > ++version = "0.7.2"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
> >> >> > ++dependencies = [
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "atty"
> >> >> > ++version = "0.2.14"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
> >> >> > ++dependencies = [
> >> >> > ++ "hermit-abi 0.1.19",
> >> >> > ++ "libc",
> >> >> > ++ "winapi",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "autocfg"
> >> >> > ++version = "1.1.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "bitflags"
> >> >> > ++version = "1.3.2"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "bumpalo"
> >> >> > ++version = "3.12.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "byteorder"
> >> >> > ++version = "1.4.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "cast"
> >> >> > ++version = "0.3.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "cfg-if"
> >> >> > ++version = "1.0.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "chrono"
> >> >> > ++version = "0.4.24"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
> >> >> > ++dependencies = [
> >> >> > ++ "num-integer",
> >> >> > ++ "num-traits",
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "ciborium"
> >> >> > ++version = "0.2.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
> >> >> > ++dependencies = [
> >> >> > ++ "ciborium-io",
> >> >> > ++ "ciborium-ll",
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "ciborium-io"
> >> >> > ++version = "0.2.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "ciborium-ll"
> >> >> > ++version = "0.2.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
> >> >> > ++dependencies = [
> >> >> > ++ "ciborium-io",
> >> >> > ++ "half",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "clap"
> >> >> > ++version = "3.2.23"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
> >> >> > ++dependencies = [
> >> >> > ++ "bitflags",
> >> >> > ++ "clap_lex",
> >> >> > ++ "indexmap",
> >> >> > ++ "textwrap",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "clap_lex"
> >> >> > ++version = "0.2.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
> >> >> > ++dependencies = [
> >> >> > ++ "os_str_bytes",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "criterion"
> >> >> > ++version = "0.4.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
> >> >> > ++dependencies = [
> >> >> > ++ "anes",
> >> >> > ++ "atty",
> >> >> > ++ "cast",
> >> >> > ++ "ciborium",
> >> >> > ++ "clap",
> >> >> > ++ "criterion-plot",
> >> >> > ++ "itertools 0.10.5",
> >> >> > ++ "lazy_static",
> >> >> > ++ "num-traits",
> >> >> > ++ "oorandom",
> >> >> > ++ "plotters",
> >> >> > ++ "rayon",
> >> >> > ++ "regex",
> >> >> > ++ "serde",
> >> >> > ++ "serde_derive",
> >> >> > ++ "serde_json",
> >> >> > ++ "tinytemplate",
> >> >> > ++ "walkdir",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "criterion-plot"
> >> >> > ++version = "0.5.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
> >> >> > ++dependencies = [
> >> >> > ++ "cast",
> >> >> > ++ "itertools 0.10.5",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "crossbeam-channel"
> >> >> > ++version = "0.5.7"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
> >> >> > ++dependencies = [
> >> >> > ++ "cfg-if",
> >> >> > ++ "crossbeam-utils",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "crossbeam-deque"
> >> >> > ++version = "0.8.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
> >> >> > ++dependencies = [
> >> >> > ++ "cfg-if",
> >> >> > ++ "crossbeam-epoch",
> >> >> > ++ "crossbeam-utils",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "crossbeam-epoch"
> >> >> > ++version = "0.9.14"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
> >> >> > ++dependencies = [
> >> >> > ++ "autocfg",
> >> >> > ++ "cfg-if",
> >> >> > ++ "crossbeam-utils",
> >> >> > ++ "memoffset",
> >> >> > ++ "scopeguard",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "crossbeam-utils"
> >> >> > ++version = "0.8.15"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
> >> >> > ++dependencies = [
> >> >> > ++ "cfg-if",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "either"
> >> >> > ++version = "1.8.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "enumflags2"
> >> >> > ++version = "0.7.5"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
> >> >> > ++dependencies = [
> >> >> > ++ "enumflags2_derive",
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "enumflags2_derive"
> >> >> > ++version = "0.7.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "form_urlencoded"
> >> >> > ++version = "1.1.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
> >> >> > ++dependencies = [
> >> >> > ++ "percent-encoding",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "futures-channel"
> >> >> > ++version = "0.3.27"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
> >> >> > ++dependencies = [
> >> >> > ++ "futures-core",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "futures-core"
> >> >> > ++version = "0.3.27"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "futures-executor"
> >> >> > ++version = "0.3.27"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
> >> >> > ++dependencies = [
> >> >> > ++ "futures-core",
> >> >> > ++ "futures-task",
> >> >> > ++ "futures-util",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "futures-macro"
> >> >> > ++version = "0.3.27"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "futures-task"
> >> >> > ++version = "0.3.27"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "futures-util"
> >> >> > ++version = "0.3.27"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
> >> >> > ++dependencies = [
> >> >> > ++ "futures-core",
> >> >> > ++ "futures-macro",
> >> >> > ++ "futures-task",
> >> >> > ++ "pin-project-lite",
> >> >> > ++ "pin-utils",
> >> >> > ++ "slab",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "getrandom"
> >> >> > ++version = "0.2.8"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
> >> >> > ++dependencies = [
> >> >> > ++ "cfg-if",
> >> >> > ++ "libc",
> >> >> > ++ "wasi",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "glib"
> >> >> > ++version = "0.10.0"
> >> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
> >> >> > ++dependencies = [
> >> >> > ++ "bitflags",
> >> >> > ++ "futures-channel",
> >> >> > ++ "futures-core",
> >> >> > ++ "futures-executor",
> >> >> > ++ "futures-task",
> >> >> > ++ "futures-util",
> >> >> > ++ "glib-macros",
> >> >> > ++ "glib-sys",
> >> >> > ++ "gobject-sys",
> >> >> > ++ "libc",
> >> >> > ++ "once_cell",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "glib-macros"
> >> >> > ++version = "0.10.0"
> >> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
> >> >> > ++dependencies = [
> >> >> > ++ "anyhow",
> >> >> > ++ "heck",
> >> >> > ++ "itertools 0.9.0",
> >> >> > ++ "proc-macro-crate 0.1.5",
> >> >> > ++ "proc-macro-error",
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "glib-sys"
> >> >> > ++version = "0.10.0"
> >> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> >> > ++dependencies = [
> >> >> > ++ "libc",
> >> >> > ++ "system-deps",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "gobject-sys"
> >> >> > ++version = "0.10.0"
> >> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> >> > ++dependencies = [
> >> >> > ++ "glib-sys",
> >> >> > ++ "libc",
> >> >> > ++ "system-deps",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "half"
> >> >> > ++version = "1.8.2"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "hashbrown"
> >> >> > ++version = "0.12.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "heck"
> >> >> > ++version = "0.3.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
> >> >> > ++dependencies = [
> >> >> > ++ "unicode-segmentation",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "hermit-abi"
> >> >> > ++version = "0.1.19"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
> >> >> > ++dependencies = [
> >> >> > ++ "libc",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "hermit-abi"
> >> >> > ++version = "0.2.6"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
> >> >> > ++dependencies = [
> >> >> > ++ "libc",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "idna"
> >> >> > ++version = "0.3.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
> >> >> > ++dependencies = [
> >> >> > ++ "unicode-bidi",
> >> >> > ++ "unicode-normalization",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "indexmap"
> >> >> > ++version = "1.9.2"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
> >> >> > ++dependencies = [
> >> >> > ++ "autocfg",
> >> >> > ++ "hashbrown",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "itertools"
> >> >> > ++version = "0.9.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
> >> >> > ++dependencies = [
> >> >> > ++ "either",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "itertools"
> >> >> > ++version = "0.10.5"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
> >> >> > ++dependencies = [
> >> >> > ++ "either",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "itoa"
> >> >> > ++version = "1.0.6"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "js-sys"
> >> >> > ++version = "0.3.61"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
> >> >> > ++dependencies = [
> >> >> > ++ "wasm-bindgen",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "lazy_static"
> >> >> > ++version = "1.4.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "libc"
> >> >> > ++version = "0.2.140"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "log"
> >> >> > ++version = "0.4.17"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
> >> >> > ++dependencies = [
> >> >> > ++ "cfg-if",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "memchr"
> >> >> > ++version = "2.5.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "memoffset"
> >> >> > ++version = "0.8.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
> >> >> > ++dependencies = [
> >> >> > ++ "autocfg",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "num-integer"
> >> >> > ++version = "0.1.45"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
> >> >> > ++dependencies = [
> >> >> > ++ "autocfg",
> >> >> > ++ "num-traits",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "num-traits"
> >> >> > ++version = "0.2.15"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
> >> >> > ++dependencies = [
> >> >> > ++ "autocfg",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "num_cpus"
> >> >> > ++version = "1.15.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
> >> >> > ++dependencies = [
> >> >> > ++ "hermit-abi 0.2.6",
> >> >> > ++ "libc",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "once_cell"
> >> >> > ++version = "1.17.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "oorandom"
> >> >> > ++version = "11.1.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "os_str_bytes"
> >> >> > ++version = "6.5.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "percent-encoding"
> >> >> > ++version = "2.2.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "pin-project-lite"
> >> >> > ++version = "0.2.9"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "pin-utils"
> >> >> > ++version = "0.1.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "pkg-config"
> >> >> > ++version = "0.3.26"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "plotters"
> >> >> > ++version = "0.3.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
> >> >> > ++dependencies = [
> >> >> > ++ "num-traits",
> >> >> > ++ "plotters-backend",
> >> >> > ++ "plotters-svg",
> >> >> > ++ "wasm-bindgen",
> >> >> > ++ "web-sys",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "plotters-backend"
> >> >> > ++version = "0.3.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "plotters-svg"
> >> >> > ++version = "0.3.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
> >> >> > ++dependencies = [
> >> >> > ++ "plotters-backend",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "ppv-lite86"
> >> >> > ++version = "0.2.17"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "proc-macro-crate"
> >> >> > ++version = "0.1.5"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
> >> >> > ++dependencies = [
> >> >> > ++ "toml",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "proc-macro-crate"
> >> >> > ++version = "1.3.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
> >> >> > ++dependencies = [
> >> >> > ++ "once_cell",
> >> >> > ++ "toml_edit",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "proc-macro-error"
> >> >> > ++version = "1.0.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro-error-attr",
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++ "version_check",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "proc-macro-error-attr"
> >> >> > ++version = "1.0.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "version_check",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "proc-macro2"
> >> >> > ++version = "1.0.53"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
> >> >> > ++dependencies = [
> >> >> > ++ "unicode-ident",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "quote"
> >> >> > ++version = "1.0.26"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "rand"
> >> >> > ++version = "0.8.5"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
> >> >> > ++dependencies = [
> >> >> > ++ "libc",
> >> >> > ++ "rand_chacha",
> >> >> > ++ "rand_core",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "rand_chacha"
> >> >> > ++version = "0.3.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
> >> >> > ++dependencies = [
> >> >> > ++ "ppv-lite86",
> >> >> > ++ "rand_core",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "rand_core"
> >> >> > ++version = "0.6.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
> >> >> > ++dependencies = [
> >> >> > ++ "getrandom",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "rayon"
> >> >> > ++version = "1.7.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
> >> >> > ++dependencies = [
> >> >> > ++ "either",
> >> >> > ++ "rayon-core",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "rayon-core"
> >> >> > ++version = "1.11.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
> >> >> > ++dependencies = [
> >> >> > ++ "crossbeam-channel",
> >> >> > ++ "crossbeam-deque",
> >> >> > ++ "crossbeam-utils",
> >> >> > ++ "num_cpus",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "regex"
> >> >> > ++version = "1.7.2"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
> >> >> > ++dependencies = [
> >> >> > ++ "regex-syntax",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "regex-syntax"
> >> >> > ++version = "0.6.29"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "ryu"
> >> >> > ++version = "1.0.13"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "same-file"
> >> >> > ++version = "1.0.6"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
> >> >> > ++dependencies = [
> >> >> > ++ "winapi-util",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "scopeguard"
> >> >> > ++version = "1.1.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "serde"
> >> >> > ++version = "1.0.158"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
> >> >> > ++dependencies = [
> >> >> > ++ "serde_derive",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "serde_bytes"
> >> >> > ++version = "0.11.9"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
> >> >> > ++dependencies = [
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "serde_derive"
> >> >> > ++version = "1.0.158"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 2.0.8",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "serde_json"
> >> >> > ++version = "1.0.94"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
> >> >> > ++dependencies = [
> >> >> > ++ "itoa",
> >> >> > ++ "ryu",
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "serde_repr"
> >> >> > ++version = "0.1.12"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 2.0.8",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "slab"
> >> >> > ++version = "0.4.8"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
> >> >> > ++dependencies = [
> >> >> > ++ "autocfg",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "static_assertions"
> >> >> > ++version = "1.1.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "strum"
> >> >> > ++version = "0.18.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "strum_macros"
> >> >> > ++version = "0.18.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
> >> >> > ++dependencies = [
> >> >> > ++ "heck",
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "syn"
> >> >> > ++version = "1.0.109"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "unicode-ident",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "syn"
> >> >> > ++version = "2.0.8"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "unicode-ident",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "system-deps"
> >> >> > ++version = "1.3.2"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
> >> >> > ++dependencies = [
> >> >> > ++ "heck",
> >> >> > ++ "pkg-config",
> >> >> > ++ "strum",
> >> >> > ++ "strum_macros",
> >> >> > ++ "thiserror",
> >> >> > ++ "toml",
> >> >> > ++ "version-compare",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "textwrap"
> >> >> > ++version = "0.16.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "thiserror"
> >> >> > ++version = "1.0.40"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
> >> >> > ++dependencies = [
> >> >> > ++ "thiserror-impl",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "thiserror-impl"
> >> >> > ++version = "1.0.40"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 2.0.8",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "time"
> >> >> > ++version = "0.3.20"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
> >> >> > ++dependencies = [
> >> >> > ++ "serde",
> >> >> > ++ "time-core",
> >> >> > ++ "time-macros",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "time-core"
> >> >> > ++version = "0.1.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "time-macros"
> >> >> > ++version = "0.2.8"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
> >> >> > ++dependencies = [
> >> >> > ++ "time-core",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "tinytemplate"
> >> >> > ++version = "1.2.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
> >> >> > ++dependencies = [
> >> >> > ++ "serde",
> >> >> > ++ "serde_json",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "tinyvec"
> >> >> > ++version = "1.6.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
> >> >> > ++dependencies = [
> >> >> > ++ "tinyvec_macros",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "tinyvec_macros"
> >> >> > ++version = "0.1.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "toml"
> >> >> > ++version = "0.5.11"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
> >> >> > ++dependencies = [
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "toml_datetime"
> >> >> > ++version = "0.6.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "toml_edit"
> >> >> > ++version = "0.19.8"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
> >> >> > ++dependencies = [
> >> >> > ++ "indexmap",
> >> >> > ++ "toml_datetime",
> >> >> > ++ "winnow",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "unicode-bidi"
> >> >> > ++version = "0.3.13"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "unicode-ident"
> >> >> > ++version = "1.0.8"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "unicode-normalization"
> >> >> > ++version = "0.1.22"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
> >> >> > ++dependencies = [
> >> >> > ++ "tinyvec",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "unicode-segmentation"
> >> >> > ++version = "1.10.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "url"
> >> >> > ++version = "2.3.1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
> >> >> > ++dependencies = [
> >> >> > ++ "form_urlencoded",
> >> >> > ++ "idna",
> >> >> > ++ "percent-encoding",
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "uuid"
> >> >> > ++version = "1.3.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
> >> >> > ++dependencies = [
> >> >> > ++ "serde",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "version-compare"
> >> >> > ++version = "0.0.10"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "version_check"
> >> >> > ++version = "0.9.4"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "walkdir"
> >> >> > ++version = "2.3.3"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
> >> >> > ++dependencies = [
> >> >> > ++ "same-file",
> >> >> > ++ "winapi-util",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "wasi"
> >> >> > ++version = "0.11.0+wasi-snapshot-preview1"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "wasm-bindgen"
> >> >> > ++version = "0.2.84"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
> >> >> > ++dependencies = [
> >> >> > ++ "cfg-if",
> >> >> > ++ "wasm-bindgen-macro",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "wasm-bindgen-backend"
> >> >> > ++version = "0.2.84"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
> >> >> > ++dependencies = [
> >> >> > ++ "bumpalo",
> >> >> > ++ "log",
> >> >> > ++ "once_cell",
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++ "wasm-bindgen-shared",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "wasm-bindgen-macro"
> >> >> > ++version = "0.2.84"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
> >> >> > ++dependencies = [
> >> >> > ++ "quote",
> >> >> > ++ "wasm-bindgen-macro-support",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "wasm-bindgen-macro-support"
> >> >> > ++version = "0.2.84"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++ "wasm-bindgen-backend",
> >> >> > ++ "wasm-bindgen-shared",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "wasm-bindgen-shared"
> >> >> > ++version = "0.2.84"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "web-sys"
> >> >> > ++version = "0.3.61"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
> >> >> > ++dependencies = [
> >> >> > ++ "js-sys",
> >> >> > ++ "wasm-bindgen",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[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.5"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
> >> >> > ++dependencies = [
> >> >> > ++ "winapi",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[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 = "winnow"
> >> >> > ++version = "0.4.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
> >> >> > ++dependencies = [
> >> >> > ++ "memchr",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "zvariant"
> >> >> > ++version = "3.12.0"
> >> >> > ++dependencies = [
> >> >> > ++ "arrayvec",
> >> >> > ++ "byteorder",
> >> >> > ++ "chrono",
> >> >> > ++ "criterion",
> >> >> > ++ "enumflags2",
> >> >> > ++ "glib",
> >> >> > ++ "libc",
> >> >> > ++ "rand",
> >> >> > ++ "serde",
> >> >> > ++ "serde_bytes",
> >> >> > ++ "serde_json",
> >> >> > ++ "serde_repr",
> >> >> > ++ "static_assertions",
> >> >> > ++ "time",
> >> >> > ++ "url",
> >> >> > ++ "uuid",
> >> >> > ++ "zvariant_derive",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "zvariant_derive"
> >> >> > ++version = "3.12.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro-crate 1.3.1",
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++ "zvariant_utils",
> >> >> > ++]
> >> >> > ++
> >> >> > ++[[package]]
> >> >> > ++name = "zvariant_utils"
> >> >> > ++version = "1.0.0"
> >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
> >> >> > ++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
> >> >> > ++dependencies = [
> >> >> > ++ "proc-macro2",
> >> >> > ++ "quote",
> >> >> > ++ "syn 1.0.109",
> >> >> > ++]
> >> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
> >> >> > +index 45367729..6981862a 100644
> >> >> > +--- a/zvariant/Cargo.toml
> >> >> > ++++ b/zvariant/Cargo.toml
> >> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
> >> >> > + serde = { version = "1.0", features = ["derive"] }
> >> >> > + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
> >> >> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
> >> >> > +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
> >> >> > ++zvariant_derive = "3.12.0"
> >> >> > + serde_bytes = { version = "0.11", optional = true }
> >> >> > + static_assertions = "1.1.0"
> >> >> > + libc = "0.2.137"
> >> >> > +2.34.1
> >> >> > +
> >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> >> > new file mode 100644
> >> >> > index 0000000000..ab769b3fce
> >> >> > --- /dev/null
> >> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> >> > @@ -0,0 +1,20 @@
> >> >> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
> >> >> > +DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
> >> >> > +This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
> >> >> > +A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
> >> >> > +data and is also supported by this crate."
> >> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
> >> >> > +LICENSE = "MIT"
> >> >> > +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
> >> >> > +
> >> >> > +SRC_URI = " \
> >> >> > +    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
> >> >> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
> >> >> > +"
> >> >> > +
> >> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
> >> >> > +S = "${WORKDIR}/zvariant"
> >> >> > +
> >> >> > +inherit cargo cargo-update-recipe-crates
> >> >> > +
> >> >> > +require ${BPN}-crates.inc
> >> >> > --
> >> >> > 2.34.1
> >> >> >
> >> >> >
> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> >> > Links: You receive all messages sent to this group.
> >> >> > View/Reply Online (#179092): https://lists.openembedded.org/g/openembedded-core/message/179092
> >> >> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
> >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> >> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
> >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> >> >
Frédéric Martinsons March 27, 2023, 8:30 a.m. UTC | #7
There is a stalled merge request for this clean:
https://github.com/meta-rust/meta-rust/pull/364

But I think Alex is right, all needed things for rust/cargo projects seem
to be already in oe-core except
for examples of recipes.

What about adding meta-rust in meta-openembedded which will contains the
example, something like

meta-rust/
├── conf
│   └── layer.conf
├── COPYING.MIT
├── README
└── recipes-extended
    ├── zvariant
    │   └── 0001-Tweak-zvariant-cargo-config.patch
    ├── zvariant_3.12.0.bb
    └── zvariant-crates.inc


On Mon, 27 Mar 2023 at 10:19, Alex Kiernan <alex.kiernan@gmail.com> wrote:

> If you're on master I don't think there's anything useful in meta-rust
> - its providing toolchains for older branches.
>
> On Mon, Mar 27, 2023 at 7:40 AM Alexander Kanavin
> <alex.kanavin@gmail.com> wrote:
> >
> > You could meanwhile review meta-rust, and see what is useful and what
> > is obsolete perhaps? I see it still carries toolchain recipes for
> > example, I have no idea why.
> >
> > Alex
> >
> > On Mon, 27 Mar 2023 at 06:09, Frédéric Martinsons
> > <frederic.martinsons@gmail.com> wrote:
> > >
> > > Ok, should I work on this cleaning of meta-rust and merging in meta-oe
> ? or should I wait for other opinions ?
> > >
> > > On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <
> alex.kanavin@gmail.com> wrote:
> > >>
> > >> rust-hello-world is installed into test images, and has a runtime test
> > >> to verify that the toolchain produces working binaries:
> > >> meta/lib/oeqa/runtime/cases/rust.py
> > >>
> > >> I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
> > >> Same as meta-perl/meta-python.
> > >> https://github.com/meta-rust/meta-rust
> > >>
> > >> Alex
> > >>
> > >> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
> > >> <frederic.martinsons@gmail.com> wrote:
> > >> >
> > >> > I thought that would be treated the same as rust-hello-world_git.bb
> which is in oe-core.
> > >> >
> > >> > Anyway, I don't mind placing it elsewhere, which layer do you think
> this recipe would land?
> > >> >
> > >> >
> > >> >
> > >> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <
> alex.kanavin@gmail.com> a écrit :
> > >> >>
> > >> >> I don't think this should be going in oe-core, as it's not actually
> > >> >> used by anything, or in any automated tests. But you can place it
> in a
> > >> >> separate layer.
> > >> >>
> > >> >> Alex
> > >> >>
> > >> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
> > >> >> <frederic.martinsons@gmail.com> wrote:
> > >> >> >
> > >> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> > >> >> >
> > >> >> > This recipe is for showing an "real world" example of
> > >> >> > a crate that depends on some git repositories.
> > >> >> >
> > >> >> > Usually, this kind of crate is built within a global
> > >> >> > workspace (here it is the zbus project) and so
> > >> >> > doesn't need a Cargo.lock on its own.
> > >> >> >
> > >> >> > For the sake of the demonstration, I had to add
> > >> >> > a patch for probiding a Cargo.lock and modifying
> > >> >> > zvariant_deriver to get it from crates.io instead
> > >> >> > of pulling locally with a relative path
> > >> >> >
> > >> >> > The use case where the crate had some git repository
> > >> >> > in dependency is very common for "private" crate that
> > >> >> > are not aimed to be published on crate.io.
> > >> >> > When the project grow bigger, it is common to have
> > >> >> > a bin and multiple lib developped in parallel, and these
> > >> >> > libs are surely on a git repostitory.
> > >> >> >
> > >> >> > Hence the need of this support in oe-core.
> > >> >> >
> > >> >> > Signed-off-by: Frederic Martinsons <
> frederic.martinsons@gmail.com>
> > >> >> > ---
> > >> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
> > >> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249
> +++++++++++++++++
> > >> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
> > >> >> >  3 files changed, 1409 insertions(+)
> > >> >> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant-crates.inc
> > >> >> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/
> zvariant_3.12.0.bb
> > >> >> >
> > >> >> > diff --git
> a/meta/recipes-extended/rust-example/zvariant-crates.inc
> b/meta/recipes-extended/rust-example/zvariant-crates.inc
> > >> >> > new file mode 100644
> > >> >> > index 0000000000..297a784661
> > >> >> > --- /dev/null
> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
> > >> >> > @@ -0,0 +1,140 @@
> > >> >> > +SRC_URI += " \
> > >> >> > +    crate://crates.io/anes/0.1.6 \
> > >> >> > +    crate://crates.io/anyhow/1.0.70 \
> > >> >> > +    crate://crates.io/arrayvec/0.7.2 \
> > >> >> > +    crate://crates.io/atty/0.2.14 \
> > >> >> > +    crate://crates.io/autocfg/1.1.0 \
> > >> >> > +    crate://crates.io/bitflags/1.3.2 \
> > >> >> > +    crate://crates.io/bumpalo/3.12.0 \
> > >> >> > +    crate://crates.io/byteorder/1.4.3 \
> > >> >> > +    crate://crates.io/cast/0.3.0 \
> > >> >> > +    crate://crates.io/cfg-if/1.0.0 \
> > >> >> > +    crate://crates.io/chrono/0.4.24 \
> > >> >> > +    crate://crates.io/ciborium-io/0.2.0 \
> > >> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
> > >> >> > +    crate://crates.io/ciborium/0.2.0 \
> > >> >> > +    crate://crates.io/clap/3.2.23 \
> > >> >> > +    crate://crates.io/clap_lex/0.2.4 \
> > >> >> > +    crate://crates.io/criterion-plot/0.5.0 \
> > >> >> > +    crate://crates.io/criterion/0.4.0 \
> > >> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
> > >> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
> > >> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
> > >> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
> > >> >> > +    crate://crates.io/either/1.8.1 \
> > >> >> > +    crate://crates.io/enumflags2/0.7.5 \
> > >> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
> > >> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
> > >> >> > +    crate://crates.io/futures-channel/0.3.27 \
> > >> >> > +    crate://crates.io/futures-core/0.3.27 \
> > >> >> > +    crate://crates.io/futures-executor/0.3.27 \
> > >> >> > +    crate://crates.io/futures-macro/0.3.27 \
> > >> >> > +    crate://crates.io/futures-task/0.3.27 \
> > >> >> > +    crate://crates.io/futures-util/0.3.27 \
> > >> >> > +    crate://crates.io/getrandom/0.2.8 \
> > >> >> > +    crate://crates.io/half/1.8.2 \
> > >> >> > +    crate://crates.io/hashbrown/0.12.3 \
> > >> >> > +    crate://crates.io/heck/0.3.3 \
> > >> >> > +    crate://crates.io/hermit-abi/0.1.19 \
> > >> >> > +    crate://crates.io/hermit-abi/0.2.6 \
> > >> >> > +    crate://crates.io/idna/0.3.0 \
> > >> >> > +    crate://crates.io/indexmap/1.9.2 \
> > >> >> > +    crate://crates.io/itertools/0.10.5 \
> > >> >> > +    crate://crates.io/itertools/0.9.0 \
> > >> >> > +    crate://crates.io/itoa/1.0.6 \
> > >> >> > +    crate://crates.io/js-sys/0.3.61 \
> > >> >> > +    crate://crates.io/lazy_static/1.4.0 \
> > >> >> > +    crate://crates.io/libc/0.2.140 \
> > >> >> > +    crate://crates.io/log/0.4.17 \
> > >> >> > +    crate://crates.io/memchr/2.5.0 \
> > >> >> > +    crate://crates.io/memoffset/0.8.0 \
> > >> >> > +    crate://crates.io/num-integer/0.1.45 \
> > >> >> > +    crate://crates.io/num-traits/0.2.15 \
> > >> >> > +    crate://crates.io/num_cpus/1.15.0 \
> > >> >> > +    crate://crates.io/once_cell/1.17.1 \
> > >> >> > +    crate://crates.io/oorandom/11.1.3 \
> > >> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
> > >> >> > +    crate://crates.io/percent-encoding/2.2.0 \
> > >> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
> > >> >> > +    crate://crates.io/pin-utils/0.1.0 \
> > >> >> > +    crate://crates.io/pkg-config/0.3.26 \
> > >> >> > +    crate://crates.io/plotters-backend/0.3.4 \
> > >> >> > +    crate://crates.io/plotters-svg/0.3.3 \
> > >> >> > +    crate://crates.io/plotters/0.3.4 \
> > >> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
> > >> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
> > >> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
> > >> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
> > >> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
> > >> >> > +    crate://crates.io/proc-macro2/1.0.53 \
> > >> >> > +    crate://crates.io/quote/1.0.26 \
> > >> >> > +    crate://crates.io/rand/0.8.5 \
> > >> >> > +    crate://crates.io/rand_chacha/0.3.1 \
> > >> >> > +    crate://crates.io/rand_core/0.6.4 \
> > >> >> > +    crate://crates.io/rayon-core/1.11.0 \
> > >> >> > +    crate://crates.io/rayon/1.7.0 \
> > >> >> > +    crate://crates.io/regex-syntax/0.6.29 \
> > >> >> > +    crate://crates.io/regex/1.7.2 \
> > >> >> > +    crate://crates.io/ryu/1.0.13 \
> > >> >> > +    crate://crates.io/same-file/1.0.6 \
> > >> >> > +    crate://crates.io/scopeguard/1.1.0 \
> > >> >> > +    crate://crates.io/serde/1.0.158 \
> > >> >> > +    crate://crates.io/serde_bytes/0.11.9 \
> > >> >> > +    crate://crates.io/serde_derive/1.0.158 \
> > >> >> > +    crate://crates.io/serde_json/1.0.94 \
> > >> >> > +    crate://crates.io/serde_repr/0.1.12 \
> > >> >> > +    crate://crates.io/slab/0.4.8 \
> > >> >> > +    crate://crates.io/static_assertions/1.1.0 \
> > >> >> > +    crate://crates.io/strum/0.18.0 \
> > >> >> > +    crate://crates.io/strum_macros/0.18.0 \
> > >> >> > +    crate://crates.io/syn/1.0.109 \
> > >> >> > +    crate://crates.io/syn/2.0.8 \
> > >> >> > +    crate://crates.io/system-deps/1.3.2 \
> > >> >> > +    crate://crates.io/textwrap/0.16.0 \
> > >> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
> > >> >> > +    crate://crates.io/thiserror/1.0.40 \
> > >> >> > +    crate://crates.io/time-core/0.1.0 \
> > >> >> > +    crate://crates.io/time-macros/0.2.8 \
> > >> >> > +    crate://crates.io/time/0.3.20 \
> > >> >> > +    crate://crates.io/tinytemplate/1.2.1 \
> > >> >> > +    crate://crates.io/tinyvec/1.6.0 \
> > >> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
> > >> >> > +    crate://crates.io/toml/0.5.11 \
> > >> >> > +    crate://crates.io/toml_datetime/0.6.1 \
> > >> >> > +    crate://crates.io/toml_edit/0.19.8 \
> > >> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
> > >> >> > +    crate://crates.io/unicode-ident/1.0.8 \
> > >> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
> > >> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
> > >> >> > +    crate://crates.io/url/2.3.1 \
> > >> >> > +    crate://crates.io/uuid/1.3.0 \
> > >> >> > +    crate://crates.io/version-compare/0.0.10 \
> > >> >> > +    crate://crates.io/version_check/0.9.4 \
> > >> >> > +    crate://crates.io/walkdir/2.3.3 \
> > >> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
> > >> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
> > >> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
> > >> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
> > >> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
> > >> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
> > >> >> > +    crate://crates.io/web-sys/0.3.61 \
> > >> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
> > >> >> > +    crate://crates.io/winapi-util/0.1.5 \
> > >> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
> > >> >> > +    crate://crates.io/winapi/0.3.9 \
> > >> >> > +    crate://crates.io/winnow/0.4.0 \
> > >> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
> > >> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
> > >> >> > +    git://
> github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib
> \
> > >> >> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys
> \
> > >> >> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys
> \
> > >> >> > +"
> > >> >> > +
> > >> >> > +SRCREV_FORMAT .= "_glib"
> > >> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
> > >> >> > +
> > >> >> > +SRCREV_FORMAT .= "_glib-sys"
> > >> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > >> >> > +
> > >> >> > +SRCREV_FORMAT .= "_gobject-sys"
> > >> >> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > >> >> > diff --git
> a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> > >> >> > new file mode 100644
> > >> >> > index 0000000000..638ba3ed4d
> > >> >> > --- /dev/null
> > >> >> > +++
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> > >> >> > @@ -0,0 +1,1249 @@
> > >> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17
> 00:00:00 2001
> > >> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
> > >> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
> > >> >> > +Subject: [PATCH] Tweak zvariant cargo config
> > >> >> > +
> > >> >> > +This library crate is a part of zbus project, and is aimed to
> > >> >> > +be published amongst the whole project.
> > >> >> > +
> > >> >> > +Nevertheless, this recipe is for showing example of real
> > >> >> > +code which uses a local registry via git url inside yocto
> > >> >> > +environment.
> > >> >> > +
> > >> >> > +I didn't find a real example of binary crate that uses git
> > >> >> > +dependency but it seems to me a very common use case
> > >> >> > +when we are working on multiple local crates that are not
> > >> >> > +aimed to be published on public registry.
> > >> >> > +
> > >> >> > +Long story short, this patch add a modified Cargo.toml
> > >> >> > +to use the zvariant_derive dependency from crates.io instead
> > >> >> > +of zbus local one and a pre generated Cargo.lock in order
> > >> >> > +to make cargo patch process inside cargo_common.bbclass work
> > >> >> > +
> > >> >> > +Upstream-Status: Inappropriate
> > >> >> > +Signed-off-by: Frederic Martinsons <
> frederic.martinsons@gmail.com>
> > >> >> > +---
> > >> >> > + zvariant/Cargo.lock | 1198
> +++++++++++++++++++++++++++++++++++++++++++
> > >> >> > + zvariant/Cargo.toml |    2 +-
> > >> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
> > >> >> > + create mode 100644 zvariant/Cargo.lock
> > >> >> > +
> > >> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
> > >> >> > +new file mode 100644
> > >> >> > +index 00000000..02a83d42
> > >> >> > +--- /dev/null
> > >> >> > ++++ b/zvariant/Cargo.lock
> > >> >> > +@@ -0,0 +1,1198 @@
> > >> >> > ++# This file is automatically @generated by Cargo.
> > >> >> > ++# It is not intended for manual editing.
> > >> >> > ++version = 3
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "anes"
> > >> >> > ++version = "0.1.6"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "anyhow"
> > >> >> > ++version = "1.0.70"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "arrayvec"
> > >> >> > ++version = "0.7.2"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "atty"
> > >> >> > ++version = "0.2.14"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
> > >> >> > ++dependencies = [
> > >> >> > ++ "hermit-abi 0.1.19",
> > >> >> > ++ "libc",
> > >> >> > ++ "winapi",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "autocfg"
> > >> >> > ++version = "1.1.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "bitflags"
> > >> >> > ++version = "1.3.2"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "bumpalo"
> > >> >> > ++version = "3.12.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "byteorder"
> > >> >> > ++version = "1.4.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "cast"
> > >> >> > ++version = "0.3.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "cfg-if"
> > >> >> > ++version = "1.0.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "chrono"
> > >> >> > ++version = "0.4.24"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "num-integer",
> > >> >> > ++ "num-traits",
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "ciborium"
> > >> >> > ++version = "0.2.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
> > >> >> > ++dependencies = [
> > >> >> > ++ "ciborium-io",
> > >> >> > ++ "ciborium-ll",
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "ciborium-io"
> > >> >> > ++version = "0.2.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "ciborium-ll"
> > >> >> > ++version = "0.2.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "ciborium-io",
> > >> >> > ++ "half",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "clap"
> > >> >> > ++version = "3.2.23"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
> > >> >> > ++dependencies = [
> > >> >> > ++ "bitflags",
> > >> >> > ++ "clap_lex",
> > >> >> > ++ "indexmap",
> > >> >> > ++ "textwrap",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "clap_lex"
> > >> >> > ++version = "0.2.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
> > >> >> > ++dependencies = [
> > >> >> > ++ "os_str_bytes",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "criterion"
> > >> >> > ++version = "0.4.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
> > >> >> > ++dependencies = [
> > >> >> > ++ "anes",
> > >> >> > ++ "atty",
> > >> >> > ++ "cast",
> > >> >> > ++ "ciborium",
> > >> >> > ++ "clap",
> > >> >> > ++ "criterion-plot",
> > >> >> > ++ "itertools 0.10.5",
> > >> >> > ++ "lazy_static",
> > >> >> > ++ "num-traits",
> > >> >> > ++ "oorandom",
> > >> >> > ++ "plotters",
> > >> >> > ++ "rayon",
> > >> >> > ++ "regex",
> > >> >> > ++ "serde",
> > >> >> > ++ "serde_derive",
> > >> >> > ++ "serde_json",
> > >> >> > ++ "tinytemplate",
> > >> >> > ++ "walkdir",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "criterion-plot"
> > >> >> > ++version = "0.5.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cast",
> > >> >> > ++ "itertools 0.10.5",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "crossbeam-channel"
> > >> >> > ++version = "0.5.7"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cfg-if",
> > >> >> > ++ "crossbeam-utils",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "crossbeam-deque"
> > >> >> > ++version = "0.8.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cfg-if",
> > >> >> > ++ "crossbeam-epoch",
> > >> >> > ++ "crossbeam-utils",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "crossbeam-epoch"
> > >> >> > ++version = "0.9.14"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
> > >> >> > ++dependencies = [
> > >> >> > ++ "autocfg",
> > >> >> > ++ "cfg-if",
> > >> >> > ++ "crossbeam-utils",
> > >> >> > ++ "memoffset",
> > >> >> > ++ "scopeguard",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "crossbeam-utils"
> > >> >> > ++version = "0.8.15"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cfg-if",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "either"
> > >> >> > ++version = "1.8.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "enumflags2"
> > >> >> > ++version = "0.7.5"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
> > >> >> > ++dependencies = [
> > >> >> > ++ "enumflags2_derive",
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "enumflags2_derive"
> > >> >> > ++version = "0.7.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "form_urlencoded"
> > >> >> > ++version = "1.1.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
> > >> >> > ++dependencies = [
> > >> >> > ++ "percent-encoding",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "futures-channel"
> > >> >> > ++version = "0.3.27"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
> > >> >> > ++dependencies = [
> > >> >> > ++ "futures-core",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "futures-core"
> > >> >> > ++version = "0.3.27"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "futures-executor"
> > >> >> > ++version = "0.3.27"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
> > >> >> > ++dependencies = [
> > >> >> > ++ "futures-core",
> > >> >> > ++ "futures-task",
> > >> >> > ++ "futures-util",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "futures-macro"
> > >> >> > ++version = "0.3.27"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "futures-task"
> > >> >> > ++version = "0.3.27"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "futures-util"
> > >> >> > ++version = "0.3.27"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
> > >> >> > ++dependencies = [
> > >> >> > ++ "futures-core",
> > >> >> > ++ "futures-macro",
> > >> >> > ++ "futures-task",
> > >> >> > ++ "pin-project-lite",
> > >> >> > ++ "pin-utils",
> > >> >> > ++ "slab",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "getrandom"
> > >> >> > ++version = "0.2.8"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cfg-if",
> > >> >> > ++ "libc",
> > >> >> > ++ "wasi",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "glib"
> > >> >> > ++version = "0.10.0"
> > >> >> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> > >> >> > ++dependencies = [
> > >> >> > ++ "bitflags",
> > >> >> > ++ "futures-channel",
> > >> >> > ++ "futures-core",
> > >> >> > ++ "futures-executor",
> > >> >> > ++ "futures-task",
> > >> >> > ++ "futures-util",
> > >> >> > ++ "glib-macros",
> > >> >> > ++ "glib-sys",
> > >> >> > ++ "gobject-sys",
> > >> >> > ++ "libc",
> > >> >> > ++ "once_cell",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "glib-macros"
> > >> >> > ++version = "0.10.0"
> > >> >> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> > >> >> > ++dependencies = [
> > >> >> > ++ "anyhow",
> > >> >> > ++ "heck",
> > >> >> > ++ "itertools 0.9.0",
> > >> >> > ++ "proc-macro-crate 0.1.5",
> > >> >> > ++ "proc-macro-error",
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "glib-sys"
> > >> >> > ++version = "0.10.0"
> > >> >> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > >> >> > ++dependencies = [
> > >> >> > ++ "libc",
> > >> >> > ++ "system-deps",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "gobject-sys"
> > >> >> > ++version = "0.10.0"
> > >> >> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> > >> >> > ++dependencies = [
> > >> >> > ++ "glib-sys",
> > >> >> > ++ "libc",
> > >> >> > ++ "system-deps",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "half"
> > >> >> > ++version = "1.8.2"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "hashbrown"
> > >> >> > ++version = "0.12.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "heck"
> > >> >> > ++version = "0.3.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
> > >> >> > ++dependencies = [
> > >> >> > ++ "unicode-segmentation",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "hermit-abi"
> > >> >> > ++version = "0.1.19"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
> > >> >> > ++dependencies = [
> > >> >> > ++ "libc",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "hermit-abi"
> > >> >> > ++version = "0.2.6"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
> > >> >> > ++dependencies = [
> > >> >> > ++ "libc",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "idna"
> > >> >> > ++version = "0.3.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
> > >> >> > ++dependencies = [
> > >> >> > ++ "unicode-bidi",
> > >> >> > ++ "unicode-normalization",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "indexmap"
> > >> >> > ++version = "1.9.2"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
> > >> >> > ++dependencies = [
> > >> >> > ++ "autocfg",
> > >> >> > ++ "hashbrown",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "itertools"
> > >> >> > ++version = "0.9.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "either",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "itertools"
> > >> >> > ++version = "0.10.5"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
> > >> >> > ++dependencies = [
> > >> >> > ++ "either",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "itoa"
> > >> >> > ++version = "1.0.6"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "js-sys"
> > >> >> > ++version = "0.3.61"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
> > >> >> > ++dependencies = [
> > >> >> > ++ "wasm-bindgen",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "lazy_static"
> > >> >> > ++version = "1.4.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "libc"
> > >> >> > ++version = "0.2.140"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "log"
> > >> >> > ++version = "0.4.17"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cfg-if",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "memchr"
> > >> >> > ++version = "2.5.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "memoffset"
> > >> >> > ++version = "0.8.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
> > >> >> > ++dependencies = [
> > >> >> > ++ "autocfg",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "num-integer"
> > >> >> > ++version = "0.1.45"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
> > >> >> > ++dependencies = [
> > >> >> > ++ "autocfg",
> > >> >> > ++ "num-traits",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "num-traits"
> > >> >> > ++version = "0.2.15"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
> > >> >> > ++dependencies = [
> > >> >> > ++ "autocfg",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "num_cpus"
> > >> >> > ++version = "1.15.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "hermit-abi 0.2.6",
> > >> >> > ++ "libc",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "once_cell"
> > >> >> > ++version = "1.17.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "oorandom"
> > >> >> > ++version = "11.1.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "os_str_bytes"
> > >> >> > ++version = "6.5.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "percent-encoding"
> > >> >> > ++version = "2.2.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "pin-project-lite"
> > >> >> > ++version = "0.2.9"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "pin-utils"
> > >> >> > ++version = "0.1.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "pkg-config"
> > >> >> > ++version = "0.3.26"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "plotters"
> > >> >> > ++version = "0.3.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
> > >> >> > ++dependencies = [
> > >> >> > ++ "num-traits",
> > >> >> > ++ "plotters-backend",
> > >> >> > ++ "plotters-svg",
> > >> >> > ++ "wasm-bindgen",
> > >> >> > ++ "web-sys",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "plotters-backend"
> > >> >> > ++version = "0.3.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "plotters-svg"
> > >> >> > ++version = "0.3.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
> > >> >> > ++dependencies = [
> > >> >> > ++ "plotters-backend",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "ppv-lite86"
> > >> >> > ++version = "0.2.17"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "proc-macro-crate"
> > >> >> > ++version = "0.1.5"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
> > >> >> > ++dependencies = [
> > >> >> > ++ "toml",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "proc-macro-crate"
> > >> >> > ++version = "1.3.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
> > >> >> > ++dependencies = [
> > >> >> > ++ "once_cell",
> > >> >> > ++ "toml_edit",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "proc-macro-error"
> > >> >> > ++version = "1.0.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro-error-attr",
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++ "version_check",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "proc-macro-error-attr"
> > >> >> > ++version = "1.0.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "version_check",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "proc-macro2"
> > >> >> > ++version = "1.0.53"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
> > >> >> > ++dependencies = [
> > >> >> > ++ "unicode-ident",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "quote"
> > >> >> > ++version = "1.0.26"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "rand"
> > >> >> > ++version = "0.8.5"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
> > >> >> > ++dependencies = [
> > >> >> > ++ "libc",
> > >> >> > ++ "rand_chacha",
> > >> >> > ++ "rand_core",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "rand_chacha"
> > >> >> > ++version = "0.3.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
> > >> >> > ++dependencies = [
> > >> >> > ++ "ppv-lite86",
> > >> >> > ++ "rand_core",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "rand_core"
> > >> >> > ++version = "0.6.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
> > >> >> > ++dependencies = [
> > >> >> > ++ "getrandom",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "rayon"
> > >> >> > ++version = "1.7.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "either",
> > >> >> > ++ "rayon-core",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "rayon-core"
> > >> >> > ++version = "1.11.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
> > >> >> > ++dependencies = [
> > >> >> > ++ "crossbeam-channel",
> > >> >> > ++ "crossbeam-deque",
> > >> >> > ++ "crossbeam-utils",
> > >> >> > ++ "num_cpus",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "regex"
> > >> >> > ++version = "1.7.2"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
> > >> >> > ++dependencies = [
> > >> >> > ++ "regex-syntax",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "regex-syntax"
> > >> >> > ++version = "0.6.29"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "ryu"
> > >> >> > ++version = "1.0.13"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "same-file"
> > >> >> > ++version = "1.0.6"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
> > >> >> > ++dependencies = [
> > >> >> > ++ "winapi-util",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "scopeguard"
> > >> >> > ++version = "1.1.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "serde"
> > >> >> > ++version = "1.0.158"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde_derive",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "serde_bytes"
> > >> >> > ++version = "0.11.9"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "serde_derive"
> > >> >> > ++version = "1.0.158"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 2.0.8",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "serde_json"
> > >> >> > ++version = "1.0.94"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
> > >> >> > ++dependencies = [
> > >> >> > ++ "itoa",
> > >> >> > ++ "ryu",
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "serde_repr"
> > >> >> > ++version = "0.1.12"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 2.0.8",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "slab"
> > >> >> > ++version = "0.4.8"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
> > >> >> > ++dependencies = [
> > >> >> > ++ "autocfg",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "static_assertions"
> > >> >> > ++version = "1.1.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "strum"
> > >> >> > ++version = "0.18.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "strum_macros"
> > >> >> > ++version = "0.18.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
> > >> >> > ++dependencies = [
> > >> >> > ++ "heck",
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "syn"
> > >> >> > ++version = "1.0.109"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "unicode-ident",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "syn"
> > >> >> > ++version = "2.0.8"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "unicode-ident",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "system-deps"
> > >> >> > ++version = "1.3.2"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "heck",
> > >> >> > ++ "pkg-config",
> > >> >> > ++ "strum",
> > >> >> > ++ "strum_macros",
> > >> >> > ++ "thiserror",
> > >> >> > ++ "toml",
> > >> >> > ++ "version-compare",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "textwrap"
> > >> >> > ++version = "0.16.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "thiserror"
> > >> >> > ++version = "1.0.40"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
> > >> >> > ++dependencies = [
> > >> >> > ++ "thiserror-impl",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "thiserror-impl"
> > >> >> > ++version = "1.0.40"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 2.0.8",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "time"
> > >> >> > ++version = "0.3.20"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde",
> > >> >> > ++ "time-core",
> > >> >> > ++ "time-macros",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "time-core"
> > >> >> > ++version = "0.1.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "time-macros"
> > >> >> > ++version = "0.2.8"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
> > >> >> > ++dependencies = [
> > >> >> > ++ "time-core",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "tinytemplate"
> > >> >> > ++version = "1.2.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde",
> > >> >> > ++ "serde_json",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "tinyvec"
> > >> >> > ++version = "1.6.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
> > >> >> > ++dependencies = [
> > >> >> > ++ "tinyvec_macros",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "tinyvec_macros"
> > >> >> > ++version = "0.1.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "toml"
> > >> >> > ++version = "0.5.11"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "toml_datetime"
> > >> >> > ++version = "0.6.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "toml_edit"
> > >> >> > ++version = "0.19.8"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
> > >> >> > ++dependencies = [
> > >> >> > ++ "indexmap",
> > >> >> > ++ "toml_datetime",
> > >> >> > ++ "winnow",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "unicode-bidi"
> > >> >> > ++version = "0.3.13"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "unicode-ident"
> > >> >> > ++version = "1.0.8"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "unicode-normalization"
> > >> >> > ++version = "0.1.22"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
> > >> >> > ++dependencies = [
> > >> >> > ++ "tinyvec",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "unicode-segmentation"
> > >> >> > ++version = "1.10.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "url"
> > >> >> > ++version = "2.3.1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
> > >> >> > ++dependencies = [
> > >> >> > ++ "form_urlencoded",
> > >> >> > ++ "idna",
> > >> >> > ++ "percent-encoding",
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "uuid"
> > >> >> > ++version = "1.3.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
> > >> >> > ++dependencies = [
> > >> >> > ++ "serde",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "version-compare"
> > >> >> > ++version = "0.0.10"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "version_check"
> > >> >> > ++version = "0.9.4"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "walkdir"
> > >> >> > ++version = "2.3.3"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
> > >> >> > ++dependencies = [
> > >> >> > ++ "same-file",
> > >> >> > ++ "winapi-util",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "wasi"
> > >> >> > ++version = "0.11.0+wasi-snapshot-preview1"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "wasm-bindgen"
> > >> >> > ++version = "0.2.84"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "cfg-if",
> > >> >> > ++ "wasm-bindgen-macro",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "wasm-bindgen-backend"
> > >> >> > ++version = "0.2.84"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
> > >> >> > ++dependencies = [
> > >> >> > ++ "bumpalo",
> > >> >> > ++ "log",
> > >> >> > ++ "once_cell",
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++ "wasm-bindgen-shared",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "wasm-bindgen-macro"
> > >> >> > ++version = "0.2.84"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
> > >> >> > ++dependencies = [
> > >> >> > ++ "quote",
> > >> >> > ++ "wasm-bindgen-macro-support",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "wasm-bindgen-macro-support"
> > >> >> > ++version = "0.2.84"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++ "wasm-bindgen-backend",
> > >> >> > ++ "wasm-bindgen-shared",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "wasm-bindgen-shared"
> > >> >> > ++version = "0.2.84"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "web-sys"
> > >> >> > ++version = "0.3.61"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
> > >> >> > ++dependencies = [
> > >> >> > ++ "js-sys",
> > >> >> > ++ "wasm-bindgen",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[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.5"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
> > >> >> > ++dependencies = [
> > >> >> > ++ "winapi",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[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 = "winnow"
> > >> >> > ++version = "0.4.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
> > >> >> > ++dependencies = [
> > >> >> > ++ "memchr",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "zvariant"
> > >> >> > ++version = "3.12.0"
> > >> >> > ++dependencies = [
> > >> >> > ++ "arrayvec",
> > >> >> > ++ "byteorder",
> > >> >> > ++ "chrono",
> > >> >> > ++ "criterion",
> > >> >> > ++ "enumflags2",
> > >> >> > ++ "glib",
> > >> >> > ++ "libc",
> > >> >> > ++ "rand",
> > >> >> > ++ "serde",
> > >> >> > ++ "serde_bytes",
> > >> >> > ++ "serde_json",
> > >> >> > ++ "serde_repr",
> > >> >> > ++ "static_assertions",
> > >> >> > ++ "time",
> > >> >> > ++ "url",
> > >> >> > ++ "uuid",
> > >> >> > ++ "zvariant_derive",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "zvariant_derive"
> > >> >> > ++version = "3.12.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro-crate 1.3.1",
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++ "zvariant_utils",
> > >> >> > ++]
> > >> >> > ++
> > >> >> > ++[[package]]
> > >> >> > ++name = "zvariant_utils"
> > >> >> > ++version = "1.0.0"
> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> > >> >> > ++checksum =
> "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
> > >> >> > ++dependencies = [
> > >> >> > ++ "proc-macro2",
> > >> >> > ++ "quote",
> > >> >> > ++ "syn 1.0.109",
> > >> >> > ++]
> > >> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
> > >> >> > +index 45367729..6981862a 100644
> > >> >> > +--- a/zvariant/Cargo.toml
> > >> >> > ++++ b/zvariant/Cargo.toml
> > >> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
> > >> >> > + serde = { version = "1.0", features = ["derive"] }
> > >> >> > + arrayvec = { version = "0.7.2", features = ["serde"], optional
> = true }
> > >> >> > + enumflags2 = { version = "0.7.5", features = ["serde"],
> optional = true }
> > >> >> > +-zvariant_derive = { version = "=3.12.0", path =
> "../zvariant_derive" }
> > >> >> > ++zvariant_derive = "3.12.0"
> > >> >> > + serde_bytes = { version = "0.11", optional = true }
> > >> >> > + static_assertions = "1.1.0"
> > >> >> > + libc = "0.2.137"
> > >> >> > +2.34.1
> > >> >> > +
> > >> >> > diff --git a/meta/recipes-extended/rust-example/
> zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> > >> >> > new file mode 100644
> > >> >> > index 0000000000..ab769b3fce
> > >> >> > --- /dev/null
> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> > >> >> > @@ -0,0 +1,20 @@
> > >> >> > +SUMMARY = "Provides API for encoding/decoding of data to/from
> D-Bus wire format"
> > >> >> > +DESCRIPTION = "This crate provides API for encoding/decoding of
> data to/from D-Bus wire format.\
> > >> >> > +This binary wire format is simple and very efficient and hence
> useful outside of D-Bus context as well.\
> > >> >> > +A modified form of this format, GVariant is very commonly used
> for efficient storage of arbitrary \
> > >> >> > +data and is also supported by this crate."
> > >> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
> > >> >> > +LICENSE = "MIT"
> > >> >> > +LIC_FILES_CHKSUM =
> "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
> > >> >> > +
> > >> >> > +SRC_URI = " \
> > >> >> > +    git://
> gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant
> \
> > >> >> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
> > >> >> > +"
> > >> >> > +
> > >> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
> > >> >> > +S = "${WORKDIR}/zvariant"
> > >> >> > +
> > >> >> > +inherit cargo cargo-update-recipe-crates
> > >> >> > +
> > >> >> > +require ${BPN}-crates.inc
> > >> >> > --
> > >> >> > 2.34.1
> > >> >> >
> > >> >> >
> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> > >> >> > Links: You receive all messages sent to this group.
> > >> >> > View/Reply Online (#179092):
> https://lists.openembedded.org/g/openembedded-core/message/179092
> > >> >> > Mute This Topic:
> https://lists.openembedded.org/mt/97840364/1686489
> > >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > >> >> > Unsubscribe:
> https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> > >> >> >
>
>
>
> --
> Alex Kiernan
>
Alex Kiernan March 27, 2023, 8:42 a.m. UTC | #8
I think modelling meta-rust on meta-python is wrong - rust doesn't
package crates, they get consumed into the main recipe (which I've
just realised means I think we have some work on licensing to do).

For this example, I think it's just a regular recipe which should sit
alongside other recipes in meta-oe; anyone who wants to consume
zvariant is going to list it as part of their Cargo.toml, not DEPEND
on this recipe.

I guess I'm really arguing that meta-rust is purely a legacy thing at
this point (one which I continue to need and maintain a fork of!).

On Mon, Mar 27, 2023 at 9:30 AM Frédéric Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> There is a stalled merge request for this clean: https://github.com/meta-rust/meta-rust/pull/364
>
> But I think Alex is right, all needed things for rust/cargo projects seem to be already in oe-core except
> for examples of recipes.
>
> What about adding meta-rust in meta-openembedded which will contains the example, something like
>
> meta-rust/
> ├── conf
> │   └── layer.conf
> ├── COPYING.MIT
> ├── README
> └── recipes-extended
>     ├── zvariant
>     │   └── 0001-Tweak-zvariant-cargo-config.patch
>     ├── zvariant_3.12.0.bb
>     └── zvariant-crates.inc
>
>
> On Mon, 27 Mar 2023 at 10:19, Alex Kiernan <alex.kiernan@gmail.com> wrote:
>>
>> If you're on master I don't think there's anything useful in meta-rust
>> - its providing toolchains for older branches.
>>
>> On Mon, Mar 27, 2023 at 7:40 AM Alexander Kanavin
>> <alex.kanavin@gmail.com> wrote:
>> >
>> > You could meanwhile review meta-rust, and see what is useful and what
>> > is obsolete perhaps? I see it still carries toolchain recipes for
>> > example, I have no idea why.
>> >
>> > Alex
>> >
>> > On Mon, 27 Mar 2023 at 06:09, Frédéric Martinsons
>> > <frederic.martinsons@gmail.com> wrote:
>> > >
>> > > Ok, should I work on this cleaning of meta-rust and merging in meta-oe ? or should I wait for other opinions ?
>> > >
>> > > On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <alex.kanavin@gmail.com> wrote:
>> > >>
>> > >> rust-hello-world is installed into test images, and has a runtime test
>> > >> to verify that the toolchain produces working binaries:
>> > >> meta/lib/oeqa/runtime/cases/rust.py
>> > >>
>> > >> I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
>> > >> Same as meta-perl/meta-python.
>> > >> https://github.com/meta-rust/meta-rust
>> > >>
>> > >> Alex
>> > >>
>> > >> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
>> > >> <frederic.martinsons@gmail.com> wrote:
>> > >> >
>> > >> > I thought that would be treated the same as rust-hello-world_git.bb which is in oe-core.
>> > >> >
>> > >> > Anyway, I don't mind placing it elsewhere, which layer do you think this recipe would land?
>> > >> >
>> > >> >
>> > >> >
>> > >> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>> > >> >>
>> > >> >> I don't think this should be going in oe-core, as it's not actually
>> > >> >> used by anything, or in any automated tests. But you can place it in a
>> > >> >> separate layer.
>> > >> >>
>> > >> >> Alex
>> > >> >>
>> > >> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
>> > >> >> <frederic.martinsons@gmail.com> wrote:
>> > >> >> >
>> > >> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > >> >> >
>> > >> >> > This recipe is for showing an "real world" example of
>> > >> >> > a crate that depends on some git repositories.
>> > >> >> >
>> > >> >> > Usually, this kind of crate is built within a global
>> > >> >> > workspace (here it is the zbus project) and so
>> > >> >> > doesn't need a Cargo.lock on its own.
>> > >> >> >
>> > >> >> > For the sake of the demonstration, I had to add
>> > >> >> > a patch for probiding a Cargo.lock and modifying
>> > >> >> > zvariant_deriver to get it from crates.io instead
>> > >> >> > of pulling locally with a relative path
>> > >> >> >
>> > >> >> > The use case where the crate had some git repository
>> > >> >> > in dependency is very common for "private" crate that
>> > >> >> > are not aimed to be published on crate.io.
>> > >> >> > When the project grow bigger, it is common to have
>> > >> >> > a bin and multiple lib developped in parallel, and these
>> > >> >> > libs are surely on a git repostitory.
>> > >> >> >
>> > >> >> > Hence the need of this support in oe-core.
>> > >> >> >
>> > >> >> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > >> >> > ---
>> > >> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
>> > >> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
>> > >> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
>> > >> >> >  3 files changed, 1409 insertions(+)
>> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
>> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> > >> >> >
>> > >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> > >> >> > new file mode 100644
>> > >> >> > index 0000000000..297a784661
>> > >> >> > --- /dev/null
>> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> > >> >> > @@ -0,0 +1,140 @@
>> > >> >> > +SRC_URI += " \
>> > >> >> > +    crate://crates.io/anes/0.1.6 \
>> > >> >> > +    crate://crates.io/anyhow/1.0.70 \
>> > >> >> > +    crate://crates.io/arrayvec/0.7.2 \
>> > >> >> > +    crate://crates.io/atty/0.2.14 \
>> > >> >> > +    crate://crates.io/autocfg/1.1.0 \
>> > >> >> > +    crate://crates.io/bitflags/1.3.2 \
>> > >> >> > +    crate://crates.io/bumpalo/3.12.0 \
>> > >> >> > +    crate://crates.io/byteorder/1.4.3 \
>> > >> >> > +    crate://crates.io/cast/0.3.0 \
>> > >> >> > +    crate://crates.io/cfg-if/1.0.0 \
>> > >> >> > +    crate://crates.io/chrono/0.4.24 \
>> > >> >> > +    crate://crates.io/ciborium-io/0.2.0 \
>> > >> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
>> > >> >> > +    crate://crates.io/ciborium/0.2.0 \
>> > >> >> > +    crate://crates.io/clap/3.2.23 \
>> > >> >> > +    crate://crates.io/clap_lex/0.2.4 \
>> > >> >> > +    crate://crates.io/criterion-plot/0.5.0 \
>> > >> >> > +    crate://crates.io/criterion/0.4.0 \
>> > >> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
>> > >> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
>> > >> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
>> > >> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
>> > >> >> > +    crate://crates.io/either/1.8.1 \
>> > >> >> > +    crate://crates.io/enumflags2/0.7.5 \
>> > >> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
>> > >> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
>> > >> >> > +    crate://crates.io/futures-channel/0.3.27 \
>> > >> >> > +    crate://crates.io/futures-core/0.3.27 \
>> > >> >> > +    crate://crates.io/futures-executor/0.3.27 \
>> > >> >> > +    crate://crates.io/futures-macro/0.3.27 \
>> > >> >> > +    crate://crates.io/futures-task/0.3.27 \
>> > >> >> > +    crate://crates.io/futures-util/0.3.27 \
>> > >> >> > +    crate://crates.io/getrandom/0.2.8 \
>> > >> >> > +    crate://crates.io/half/1.8.2 \
>> > >> >> > +    crate://crates.io/hashbrown/0.12.3 \
>> > >> >> > +    crate://crates.io/heck/0.3.3 \
>> > >> >> > +    crate://crates.io/hermit-abi/0.1.19 \
>> > >> >> > +    crate://crates.io/hermit-abi/0.2.6 \
>> > >> >> > +    crate://crates.io/idna/0.3.0 \
>> > >> >> > +    crate://crates.io/indexmap/1.9.2 \
>> > >> >> > +    crate://crates.io/itertools/0.10.5 \
>> > >> >> > +    crate://crates.io/itertools/0.9.0 \
>> > >> >> > +    crate://crates.io/itoa/1.0.6 \
>> > >> >> > +    crate://crates.io/js-sys/0.3.61 \
>> > >> >> > +    crate://crates.io/lazy_static/1.4.0 \
>> > >> >> > +    crate://crates.io/libc/0.2.140 \
>> > >> >> > +    crate://crates.io/log/0.4.17 \
>> > >> >> > +    crate://crates.io/memchr/2.5.0 \
>> > >> >> > +    crate://crates.io/memoffset/0.8.0 \
>> > >> >> > +    crate://crates.io/num-integer/0.1.45 \
>> > >> >> > +    crate://crates.io/num-traits/0.2.15 \
>> > >> >> > +    crate://crates.io/num_cpus/1.15.0 \
>> > >> >> > +    crate://crates.io/once_cell/1.17.1 \
>> > >> >> > +    crate://crates.io/oorandom/11.1.3 \
>> > >> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
>> > >> >> > +    crate://crates.io/percent-encoding/2.2.0 \
>> > >> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
>> > >> >> > +    crate://crates.io/pin-utils/0.1.0 \
>> > >> >> > +    crate://crates.io/pkg-config/0.3.26 \
>> > >> >> > +    crate://crates.io/plotters-backend/0.3.4 \
>> > >> >> > +    crate://crates.io/plotters-svg/0.3.3 \
>> > >> >> > +    crate://crates.io/plotters/0.3.4 \
>> > >> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
>> > >> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
>> > >> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
>> > >> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
>> > >> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
>> > >> >> > +    crate://crates.io/proc-macro2/1.0.53 \
>> > >> >> > +    crate://crates.io/quote/1.0.26 \
>> > >> >> > +    crate://crates.io/rand/0.8.5 \
>> > >> >> > +    crate://crates.io/rand_chacha/0.3.1 \
>> > >> >> > +    crate://crates.io/rand_core/0.6.4 \
>> > >> >> > +    crate://crates.io/rayon-core/1.11.0 \
>> > >> >> > +    crate://crates.io/rayon/1.7.0 \
>> > >> >> > +    crate://crates.io/regex-syntax/0.6.29 \
>> > >> >> > +    crate://crates.io/regex/1.7.2 \
>> > >> >> > +    crate://crates.io/ryu/1.0.13 \
>> > >> >> > +    crate://crates.io/same-file/1.0.6 \
>> > >> >> > +    crate://crates.io/scopeguard/1.1.0 \
>> > >> >> > +    crate://crates.io/serde/1.0.158 \
>> > >> >> > +    crate://crates.io/serde_bytes/0.11.9 \
>> > >> >> > +    crate://crates.io/serde_derive/1.0.158 \
>> > >> >> > +    crate://crates.io/serde_json/1.0.94 \
>> > >> >> > +    crate://crates.io/serde_repr/0.1.12 \
>> > >> >> > +    crate://crates.io/slab/0.4.8 \
>> > >> >> > +    crate://crates.io/static_assertions/1.1.0 \
>> > >> >> > +    crate://crates.io/strum/0.18.0 \
>> > >> >> > +    crate://crates.io/strum_macros/0.18.0 \
>> > >> >> > +    crate://crates.io/syn/1.0.109 \
>> > >> >> > +    crate://crates.io/syn/2.0.8 \
>> > >> >> > +    crate://crates.io/system-deps/1.3.2 \
>> > >> >> > +    crate://crates.io/textwrap/0.16.0 \
>> > >> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
>> > >> >> > +    crate://crates.io/thiserror/1.0.40 \
>> > >> >> > +    crate://crates.io/time-core/0.1.0 \
>> > >> >> > +    crate://crates.io/time-macros/0.2.8 \
>> > >> >> > +    crate://crates.io/time/0.3.20 \
>> > >> >> > +    crate://crates.io/tinytemplate/1.2.1 \
>> > >> >> > +    crate://crates.io/tinyvec/1.6.0 \
>> > >> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
>> > >> >> > +    crate://crates.io/toml/0.5.11 \
>> > >> >> > +    crate://crates.io/toml_datetime/0.6.1 \
>> > >> >> > +    crate://crates.io/toml_edit/0.19.8 \
>> > >> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
>> > >> >> > +    crate://crates.io/unicode-ident/1.0.8 \
>> > >> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
>> > >> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
>> > >> >> > +    crate://crates.io/url/2.3.1 \
>> > >> >> > +    crate://crates.io/uuid/1.3.0 \
>> > >> >> > +    crate://crates.io/version-compare/0.0.10 \
>> > >> >> > +    crate://crates.io/version_check/0.9.4 \
>> > >> >> > +    crate://crates.io/walkdir/2.3.3 \
>> > >> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
>> > >> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
>> > >> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
>> > >> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
>> > >> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
>> > >> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
>> > >> >> > +    crate://crates.io/web-sys/0.3.61 \
>> > >> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
>> > >> >> > +    crate://crates.io/winapi-util/0.1.5 \
>> > >> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
>> > >> >> > +    crate://crates.io/winapi/0.3.9 \
>> > >> >> > +    crate://crates.io/winnow/0.4.0 \
>> > >> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
>> > >> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
>> > >> >> > +    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
>> > >> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
>> > >> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
>> > >> >> > +"
>> > >> >> > +
>> > >> >> > +SRCREV_FORMAT .= "_glib"
>> > >> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> > >> >> > +
>> > >> >> > +SRCREV_FORMAT .= "_glib-sys"
>> > >> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > >> >> > +
>> > >> >> > +SRCREV_FORMAT .= "_gobject-sys"
>> > >> >> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> > >> >> > new file mode 100644
>> > >> >> > index 0000000000..638ba3ed4d
>> > >> >> > --- /dev/null
>> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> > >> >> > @@ -0,0 +1,1249 @@
>> > >> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
>> > >> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > >> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
>> > >> >> > +Subject: [PATCH] Tweak zvariant cargo config
>> > >> >> > +
>> > >> >> > +This library crate is a part of zbus project, and is aimed to
>> > >> >> > +be published amongst the whole project.
>> > >> >> > +
>> > >> >> > +Nevertheless, this recipe is for showing example of real
>> > >> >> > +code which uses a local registry via git url inside yocto
>> > >> >> > +environment.
>> > >> >> > +
>> > >> >> > +I didn't find a real example of binary crate that uses git
>> > >> >> > +dependency but it seems to me a very common use case
>> > >> >> > +when we are working on multiple local crates that are not
>> > >> >> > +aimed to be published on public registry.
>> > >> >> > +
>> > >> >> > +Long story short, this patch add a modified Cargo.toml
>> > >> >> > +to use the zvariant_derive dependency from crates.io instead
>> > >> >> > +of zbus local one and a pre generated Cargo.lock in order
>> > >> >> > +to make cargo patch process inside cargo_common.bbclass work
>> > >> >> > +
>> > >> >> > +Upstream-Status: Inappropriate
>> > >> >> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> > >> >> > +---
>> > >> >> > + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
>> > >> >> > + zvariant/Cargo.toml |    2 +-
>> > >> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
>> > >> >> > + create mode 100644 zvariant/Cargo.lock
>> > >> >> > +
>> > >> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
>> > >> >> > +new file mode 100644
>> > >> >> > +index 00000000..02a83d42
>> > >> >> > +--- /dev/null
>> > >> >> > ++++ b/zvariant/Cargo.lock
>> > >> >> > +@@ -0,0 +1,1198 @@
>> > >> >> > ++# This file is automatically @generated by Cargo.
>> > >> >> > ++# It is not intended for manual editing.
>> > >> >> > ++version = 3
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "anes"
>> > >> >> > ++version = "0.1.6"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "anyhow"
>> > >> >> > ++version = "1.0.70"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "arrayvec"
>> > >> >> > ++version = "0.7.2"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "atty"
>> > >> >> > ++version = "0.2.14"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "hermit-abi 0.1.19",
>> > >> >> > ++ "libc",
>> > >> >> > ++ "winapi",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "autocfg"
>> > >> >> > ++version = "1.1.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "bitflags"
>> > >> >> > ++version = "1.3.2"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "bumpalo"
>> > >> >> > ++version = "3.12.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "byteorder"
>> > >> >> > ++version = "1.4.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "cast"
>> > >> >> > ++version = "0.3.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "cfg-if"
>> > >> >> > ++version = "1.0.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "chrono"
>> > >> >> > ++version = "0.4.24"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "num-integer",
>> > >> >> > ++ "num-traits",
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "ciborium"
>> > >> >> > ++version = "0.2.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "ciborium-io",
>> > >> >> > ++ "ciborium-ll",
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "ciborium-io"
>> > >> >> > ++version = "0.2.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "ciborium-ll"
>> > >> >> > ++version = "0.2.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "ciborium-io",
>> > >> >> > ++ "half",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "clap"
>> > >> >> > ++version = "3.2.23"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "bitflags",
>> > >> >> > ++ "clap_lex",
>> > >> >> > ++ "indexmap",
>> > >> >> > ++ "textwrap",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "clap_lex"
>> > >> >> > ++version = "0.2.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "os_str_bytes",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "criterion"
>> > >> >> > ++version = "0.4.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "anes",
>> > >> >> > ++ "atty",
>> > >> >> > ++ "cast",
>> > >> >> > ++ "ciborium",
>> > >> >> > ++ "clap",
>> > >> >> > ++ "criterion-plot",
>> > >> >> > ++ "itertools 0.10.5",
>> > >> >> > ++ "lazy_static",
>> > >> >> > ++ "num-traits",
>> > >> >> > ++ "oorandom",
>> > >> >> > ++ "plotters",
>> > >> >> > ++ "rayon",
>> > >> >> > ++ "regex",
>> > >> >> > ++ "serde",
>> > >> >> > ++ "serde_derive",
>> > >> >> > ++ "serde_json",
>> > >> >> > ++ "tinytemplate",
>> > >> >> > ++ "walkdir",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "criterion-plot"
>> > >> >> > ++version = "0.5.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cast",
>> > >> >> > ++ "itertools 0.10.5",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "crossbeam-channel"
>> > >> >> > ++version = "0.5.7"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++ "crossbeam-utils",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "crossbeam-deque"
>> > >> >> > ++version = "0.8.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++ "crossbeam-epoch",
>> > >> >> > ++ "crossbeam-utils",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "crossbeam-epoch"
>> > >> >> > ++version = "0.9.14"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "autocfg",
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++ "crossbeam-utils",
>> > >> >> > ++ "memoffset",
>> > >> >> > ++ "scopeguard",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "crossbeam-utils"
>> > >> >> > ++version = "0.8.15"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "either"
>> > >> >> > ++version = "1.8.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "enumflags2"
>> > >> >> > ++version = "0.7.5"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "enumflags2_derive",
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "enumflags2_derive"
>> > >> >> > ++version = "0.7.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "form_urlencoded"
>> > >> >> > ++version = "1.1.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "percent-encoding",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "futures-channel"
>> > >> >> > ++version = "0.3.27"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "futures-core",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "futures-core"
>> > >> >> > ++version = "0.3.27"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "futures-executor"
>> > >> >> > ++version = "0.3.27"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "futures-core",
>> > >> >> > ++ "futures-task",
>> > >> >> > ++ "futures-util",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "futures-macro"
>> > >> >> > ++version = "0.3.27"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "futures-task"
>> > >> >> > ++version = "0.3.27"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "futures-util"
>> > >> >> > ++version = "0.3.27"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "futures-core",
>> > >> >> > ++ "futures-macro",
>> > >> >> > ++ "futures-task",
>> > >> >> > ++ "pin-project-lite",
>> > >> >> > ++ "pin-utils",
>> > >> >> > ++ "slab",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "getrandom"
>> > >> >> > ++version = "0.2.8"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++ "libc",
>> > >> >> > ++ "wasi",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "glib"
>> > >> >> > ++version = "0.10.0"
>> > >> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "bitflags",
>> > >> >> > ++ "futures-channel",
>> > >> >> > ++ "futures-core",
>> > >> >> > ++ "futures-executor",
>> > >> >> > ++ "futures-task",
>> > >> >> > ++ "futures-util",
>> > >> >> > ++ "glib-macros",
>> > >> >> > ++ "glib-sys",
>> > >> >> > ++ "gobject-sys",
>> > >> >> > ++ "libc",
>> > >> >> > ++ "once_cell",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "glib-macros"
>> > >> >> > ++version = "0.10.0"
>> > >> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "anyhow",
>> > >> >> > ++ "heck",
>> > >> >> > ++ "itertools 0.9.0",
>> > >> >> > ++ "proc-macro-crate 0.1.5",
>> > >> >> > ++ "proc-macro-error",
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "glib-sys"
>> > >> >> > ++version = "0.10.0"
>> > >> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "libc",
>> > >> >> > ++ "system-deps",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "gobject-sys"
>> > >> >> > ++version = "0.10.0"
>> > >> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "glib-sys",
>> > >> >> > ++ "libc",
>> > >> >> > ++ "system-deps",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "half"
>> > >> >> > ++version = "1.8.2"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "hashbrown"
>> > >> >> > ++version = "0.12.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "heck"
>> > >> >> > ++version = "0.3.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "unicode-segmentation",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "hermit-abi"
>> > >> >> > ++version = "0.1.19"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "libc",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "hermit-abi"
>> > >> >> > ++version = "0.2.6"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "libc",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "idna"
>> > >> >> > ++version = "0.3.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "unicode-bidi",
>> > >> >> > ++ "unicode-normalization",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "indexmap"
>> > >> >> > ++version = "1.9.2"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "autocfg",
>> > >> >> > ++ "hashbrown",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "itertools"
>> > >> >> > ++version = "0.9.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "either",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "itertools"
>> > >> >> > ++version = "0.10.5"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "either",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "itoa"
>> > >> >> > ++version = "1.0.6"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "js-sys"
>> > >> >> > ++version = "0.3.61"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "wasm-bindgen",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "lazy_static"
>> > >> >> > ++version = "1.4.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "libc"
>> > >> >> > ++version = "0.2.140"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "log"
>> > >> >> > ++version = "0.4.17"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "memchr"
>> > >> >> > ++version = "2.5.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "memoffset"
>> > >> >> > ++version = "0.8.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "autocfg",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "num-integer"
>> > >> >> > ++version = "0.1.45"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "autocfg",
>> > >> >> > ++ "num-traits",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "num-traits"
>> > >> >> > ++version = "0.2.15"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "autocfg",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "num_cpus"
>> > >> >> > ++version = "1.15.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "hermit-abi 0.2.6",
>> > >> >> > ++ "libc",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "once_cell"
>> > >> >> > ++version = "1.17.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "oorandom"
>> > >> >> > ++version = "11.1.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "os_str_bytes"
>> > >> >> > ++version = "6.5.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "percent-encoding"
>> > >> >> > ++version = "2.2.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "pin-project-lite"
>> > >> >> > ++version = "0.2.9"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "pin-utils"
>> > >> >> > ++version = "0.1.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "pkg-config"
>> > >> >> > ++version = "0.3.26"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "plotters"
>> > >> >> > ++version = "0.3.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "num-traits",
>> > >> >> > ++ "plotters-backend",
>> > >> >> > ++ "plotters-svg",
>> > >> >> > ++ "wasm-bindgen",
>> > >> >> > ++ "web-sys",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "plotters-backend"
>> > >> >> > ++version = "0.3.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "plotters-svg"
>> > >> >> > ++version = "0.3.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "plotters-backend",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "ppv-lite86"
>> > >> >> > ++version = "0.2.17"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "proc-macro-crate"
>> > >> >> > ++version = "0.1.5"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "toml",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "proc-macro-crate"
>> > >> >> > ++version = "1.3.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "once_cell",
>> > >> >> > ++ "toml_edit",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "proc-macro-error"
>> > >> >> > ++version = "1.0.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro-error-attr",
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++ "version_check",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "proc-macro-error-attr"
>> > >> >> > ++version = "1.0.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "version_check",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "proc-macro2"
>> > >> >> > ++version = "1.0.53"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "unicode-ident",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "quote"
>> > >> >> > ++version = "1.0.26"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "rand"
>> > >> >> > ++version = "0.8.5"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "libc",
>> > >> >> > ++ "rand_chacha",
>> > >> >> > ++ "rand_core",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "rand_chacha"
>> > >> >> > ++version = "0.3.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "ppv-lite86",
>> > >> >> > ++ "rand_core",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "rand_core"
>> > >> >> > ++version = "0.6.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "getrandom",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "rayon"
>> > >> >> > ++version = "1.7.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "either",
>> > >> >> > ++ "rayon-core",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "rayon-core"
>> > >> >> > ++version = "1.11.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "crossbeam-channel",
>> > >> >> > ++ "crossbeam-deque",
>> > >> >> > ++ "crossbeam-utils",
>> > >> >> > ++ "num_cpus",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "regex"
>> > >> >> > ++version = "1.7.2"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "regex-syntax",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "regex-syntax"
>> > >> >> > ++version = "0.6.29"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "ryu"
>> > >> >> > ++version = "1.0.13"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "same-file"
>> > >> >> > ++version = "1.0.6"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "winapi-util",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "scopeguard"
>> > >> >> > ++version = "1.1.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "serde"
>> > >> >> > ++version = "1.0.158"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde_derive",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "serde_bytes"
>> > >> >> > ++version = "0.11.9"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "serde_derive"
>> > >> >> > ++version = "1.0.158"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 2.0.8",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "serde_json"
>> > >> >> > ++version = "1.0.94"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "itoa",
>> > >> >> > ++ "ryu",
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "serde_repr"
>> > >> >> > ++version = "0.1.12"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 2.0.8",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "slab"
>> > >> >> > ++version = "0.4.8"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "autocfg",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "static_assertions"
>> > >> >> > ++version = "1.1.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "strum"
>> > >> >> > ++version = "0.18.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "strum_macros"
>> > >> >> > ++version = "0.18.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "heck",
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "syn"
>> > >> >> > ++version = "1.0.109"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "unicode-ident",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "syn"
>> > >> >> > ++version = "2.0.8"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "unicode-ident",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "system-deps"
>> > >> >> > ++version = "1.3.2"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "heck",
>> > >> >> > ++ "pkg-config",
>> > >> >> > ++ "strum",
>> > >> >> > ++ "strum_macros",
>> > >> >> > ++ "thiserror",
>> > >> >> > ++ "toml",
>> > >> >> > ++ "version-compare",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "textwrap"
>> > >> >> > ++version = "0.16.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "thiserror"
>> > >> >> > ++version = "1.0.40"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "thiserror-impl",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "thiserror-impl"
>> > >> >> > ++version = "1.0.40"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 2.0.8",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "time"
>> > >> >> > ++version = "0.3.20"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde",
>> > >> >> > ++ "time-core",
>> > >> >> > ++ "time-macros",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "time-core"
>> > >> >> > ++version = "0.1.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "time-macros"
>> > >> >> > ++version = "0.2.8"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "time-core",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "tinytemplate"
>> > >> >> > ++version = "1.2.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde",
>> > >> >> > ++ "serde_json",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "tinyvec"
>> > >> >> > ++version = "1.6.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "tinyvec_macros",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "tinyvec_macros"
>> > >> >> > ++version = "0.1.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "toml"
>> > >> >> > ++version = "0.5.11"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "toml_datetime"
>> > >> >> > ++version = "0.6.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "toml_edit"
>> > >> >> > ++version = "0.19.8"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "indexmap",
>> > >> >> > ++ "toml_datetime",
>> > >> >> > ++ "winnow",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "unicode-bidi"
>> > >> >> > ++version = "0.3.13"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "unicode-ident"
>> > >> >> > ++version = "1.0.8"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "unicode-normalization"
>> > >> >> > ++version = "0.1.22"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "tinyvec",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "unicode-segmentation"
>> > >> >> > ++version = "1.10.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "url"
>> > >> >> > ++version = "2.3.1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "form_urlencoded",
>> > >> >> > ++ "idna",
>> > >> >> > ++ "percent-encoding",
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "uuid"
>> > >> >> > ++version = "1.3.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "serde",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "version-compare"
>> > >> >> > ++version = "0.0.10"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "version_check"
>> > >> >> > ++version = "0.9.4"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "walkdir"
>> > >> >> > ++version = "2.3.3"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "same-file",
>> > >> >> > ++ "winapi-util",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "wasi"
>> > >> >> > ++version = "0.11.0+wasi-snapshot-preview1"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "wasm-bindgen"
>> > >> >> > ++version = "0.2.84"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "cfg-if",
>> > >> >> > ++ "wasm-bindgen-macro",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "wasm-bindgen-backend"
>> > >> >> > ++version = "0.2.84"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "bumpalo",
>> > >> >> > ++ "log",
>> > >> >> > ++ "once_cell",
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++ "wasm-bindgen-shared",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "wasm-bindgen-macro"
>> > >> >> > ++version = "0.2.84"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "quote",
>> > >> >> > ++ "wasm-bindgen-macro-support",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "wasm-bindgen-macro-support"
>> > >> >> > ++version = "0.2.84"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++ "wasm-bindgen-backend",
>> > >> >> > ++ "wasm-bindgen-shared",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "wasm-bindgen-shared"
>> > >> >> > ++version = "0.2.84"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "web-sys"
>> > >> >> > ++version = "0.3.61"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "js-sys",
>> > >> >> > ++ "wasm-bindgen",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[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.5"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "winapi",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[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 = "winnow"
>> > >> >> > ++version = "0.4.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "memchr",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "zvariant"
>> > >> >> > ++version = "3.12.0"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "arrayvec",
>> > >> >> > ++ "byteorder",
>> > >> >> > ++ "chrono",
>> > >> >> > ++ "criterion",
>> > >> >> > ++ "enumflags2",
>> > >> >> > ++ "glib",
>> > >> >> > ++ "libc",
>> > >> >> > ++ "rand",
>> > >> >> > ++ "serde",
>> > >> >> > ++ "serde_bytes",
>> > >> >> > ++ "serde_json",
>> > >> >> > ++ "serde_repr",
>> > >> >> > ++ "static_assertions",
>> > >> >> > ++ "time",
>> > >> >> > ++ "url",
>> > >> >> > ++ "uuid",
>> > >> >> > ++ "zvariant_derive",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "zvariant_derive"
>> > >> >> > ++version = "3.12.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro-crate 1.3.1",
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++ "zvariant_utils",
>> > >> >> > ++]
>> > >> >> > ++
>> > >> >> > ++[[package]]
>> > >> >> > ++name = "zvariant_utils"
>> > >> >> > ++version = "1.0.0"
>> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> > >> >> > ++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
>> > >> >> > ++dependencies = [
>> > >> >> > ++ "proc-macro2",
>> > >> >> > ++ "quote",
>> > >> >> > ++ "syn 1.0.109",
>> > >> >> > ++]
>> > >> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
>> > >> >> > +index 45367729..6981862a 100644
>> > >> >> > +--- a/zvariant/Cargo.toml
>> > >> >> > ++++ b/zvariant/Cargo.toml
>> > >> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
>> > >> >> > + serde = { version = "1.0", features = ["derive"] }
>> > >> >> > + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
>> > >> >> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
>> > >> >> > +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
>> > >> >> > ++zvariant_derive = "3.12.0"
>> > >> >> > + serde_bytes = { version = "0.11", optional = true }
>> > >> >> > + static_assertions = "1.1.0"
>> > >> >> > + libc = "0.2.137"
>> > >> >> > +2.34.1
>> > >> >> > +
>> > >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> > >> >> > new file mode 100644
>> > >> >> > index 0000000000..ab769b3fce
>> > >> >> > --- /dev/null
>> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> > >> >> > @@ -0,0 +1,20 @@
>> > >> >> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
>> > >> >> > +DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
>> > >> >> > +This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
>> > >> >> > +A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
>> > >> >> > +data and is also supported by this crate."
>> > >> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
>> > >> >> > +LICENSE = "MIT"
>> > >> >> > +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
>> > >> >> > +
>> > >> >> > +SRC_URI = " \
>> > >> >> > +    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
>> > >> >> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
>> > >> >> > +"
>> > >> >> > +
>> > >> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
>> > >> >> > +S = "${WORKDIR}/zvariant"
>> > >> >> > +
>> > >> >> > +inherit cargo cargo-update-recipe-crates
>> > >> >> > +
>> > >> >> > +require ${BPN}-crates.inc
>> > >> >> > --
>> > >> >> > 2.34.1
>> > >> >> >
>> > >> >> >
>> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> > >> >> > Links: You receive all messages sent to this group.
>> > >> >> > View/Reply Online (#179092): https://lists.openembedded.org/g/openembedded-core/message/179092
>> > >> >> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
>> > >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
>> > >> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
>> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> > >> >> >
>>
>>
>>
>> --
>> Alex Kiernan
Frédéric Martinsons March 27, 2023, 8:52 a.m. UTC | #9
True, no rust project will ever DEPENDS on the zvariant recipe and as you
said
will simply list zvariant as a crate.
My main concern with the example was to address this comment:
https://patchwork.yoctoproject.org/project/oe-core/patch/20221030173815.10212-2-alex.kiernan@gmail.com/#6450

So , do you think it's still worth providing such an example ? and if yes,
can I place it
in meta-openembedded/meta-oe/recipes-extended/ ?



On Mon, 27 Mar 2023 at 10:42, Alex Kiernan <alex.kiernan@gmail.com> wrote:

> I think modelling meta-rust on meta-python is wrong - rust doesn't
> package crates, they get consumed into the main recipe (which I've
> just realised means I think we have some work on licensing to do).
>
> For this example, I think it's just a regular recipe which should sit
> alongside other recipes in meta-oe; anyone who wants to consume
> zvariant is going to list it as part of their Cargo.toml, not DEPEND
> on this recipe.
>
> I guess I'm really arguing that meta-rust is purely a legacy thing at
> this point (one which I continue to need and maintain a fork of!).
>
> On Mon, Mar 27, 2023 at 9:30 AM Frédéric Martinsons
> <frederic.martinsons@gmail.com> wrote:
> >
> > There is a stalled merge request for this clean:
> https://github.com/meta-rust/meta-rust/pull/364
> >
> > But I think Alex is right, all needed things for rust/cargo projects
> seem to be already in oe-core except
> > for examples of recipes.
> >
> > What about adding meta-rust in meta-openembedded which will contains the
> example, something like
> >
> > meta-rust/
> > ├── conf
> > │   └── layer.conf
> > ├── COPYING.MIT
> > ├── README
> > └── recipes-extended
> >     ├── zvariant
> >     │   └── 0001-Tweak-zvariant-cargo-config.patch
> >     ├── zvariant_3.12.0.bb
> >     └── zvariant-crates.inc
> >
> >
> > On Mon, 27 Mar 2023 at 10:19, Alex Kiernan <alex.kiernan@gmail.com>
> wrote:
> >>
> >> If you're on master I don't think there's anything useful in meta-rust
> >> - its providing toolchains for older branches.
> >>
> >> On Mon, Mar 27, 2023 at 7:40 AM Alexander Kanavin
> >> <alex.kanavin@gmail.com> wrote:
> >> >
> >> > You could meanwhile review meta-rust, and see what is useful and what
> >> > is obsolete perhaps? I see it still carries toolchain recipes for
> >> > example, I have no idea why.
> >> >
> >> > Alex
> >> >
> >> > On Mon, 27 Mar 2023 at 06:09, Frédéric Martinsons
> >> > <frederic.martinsons@gmail.com> wrote:
> >> > >
> >> > > Ok, should I work on this cleaning of meta-rust and merging in
> meta-oe ? or should I wait for other opinions ?
> >> > >
> >> > > On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <
> alex.kanavin@gmail.com> wrote:
> >> > >>
> >> > >> rust-hello-world is installed into test images, and has a runtime
> test
> >> > >> to verify that the toolchain produces working binaries:
> >> > >> meta/lib/oeqa/runtime/cases/rust.py
> >> > >>
> >> > >> I thought meta-rust could be cleaned up, and added to meta-oe
> perhaps?
> >> > >> Same as meta-perl/meta-python.
> >> > >> https://github.com/meta-rust/meta-rust
> >> > >>
> >> > >> Alex
> >> > >>
> >> > >> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
> >> > >> <frederic.martinsons@gmail.com> wrote:
> >> > >> >
> >> > >> > I thought that would be treated the same as
> rust-hello-world_git.bb which is in oe-core.
> >> > >> >
> >> > >> > Anyway, I don't mind placing it elsewhere, which layer do you
> think this recipe would land?
> >> > >> >
> >> > >> >
> >> > >> >
> >> > >> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <
> alex.kanavin@gmail.com> a écrit :
> >> > >> >>
> >> > >> >> I don't think this should be going in oe-core, as it's not
> actually
> >> > >> >> used by anything, or in any automated tests. But you can place
> it in a
> >> > >> >> separate layer.
> >> > >> >>
> >> > >> >> Alex
> >> > >> >>
> >> > >> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
> >> > >> >> <frederic.martinsons@gmail.com> wrote:
> >> > >> >> >
> >> > >> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> > >> >> >
> >> > >> >> > This recipe is for showing an "real world" example of
> >> > >> >> > a crate that depends on some git repositories.
> >> > >> >> >
> >> > >> >> > Usually, this kind of crate is built within a global
> >> > >> >> > workspace (here it is the zbus project) and so
> >> > >> >> > doesn't need a Cargo.lock on its own.
> >> > >> >> >
> >> > >> >> > For the sake of the demonstration, I had to add
> >> > >> >> > a patch for probiding a Cargo.lock and modifying
> >> > >> >> > zvariant_deriver to get it from crates.io instead
> >> > >> >> > of pulling locally with a relative path
> >> > >> >> >
> >> > >> >> > The use case where the crate had some git repository
> >> > >> >> > in dependency is very common for "private" crate that
> >> > >> >> > are not aimed to be published on crate.io.
> >> > >> >> > When the project grow bigger, it is common to have
> >> > >> >> > a bin and multiple lib developped in parallel, and these
> >> > >> >> > libs are surely on a git repostitory.
> >> > >> >> >
> >> > >> >> > Hence the need of this support in oe-core.
> >> > >> >> >
> >> > >> >> > Signed-off-by: Frederic Martinsons <
> frederic.martinsons@gmail.com>
> >> > >> >> > ---
> >> > >> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
> >> > >> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249
> +++++++++++++++++
> >> > >> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
> >> > >> >> >  3 files changed, 1409 insertions(+)
> >> > >> >> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant-crates.inc
> >> > >> >> >  create mode 100644
> meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/
> zvariant_3.12.0.bb
> >> > >> >> >
> >> > >> >> > diff --git
> a/meta/recipes-extended/rust-example/zvariant-crates.inc
> b/meta/recipes-extended/rust-example/zvariant-crates.inc
> >> > >> >> > new file mode 100644
> >> > >> >> > index 0000000000..297a784661
> >> > >> >> > --- /dev/null
> >> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
> >> > >> >> > @@ -0,0 +1,140 @@
> >> > >> >> > +SRC_URI += " \
> >> > >> >> > +    crate://crates.io/anes/0.1.6 \
> >> > >> >> > +    crate://crates.io/anyhow/1.0.70 \
> >> > >> >> > +    crate://crates.io/arrayvec/0.7.2 \
> >> > >> >> > +    crate://crates.io/atty/0.2.14 \
> >> > >> >> > +    crate://crates.io/autocfg/1.1.0 \
> >> > >> >> > +    crate://crates.io/bitflags/1.3.2 \
> >> > >> >> > +    crate://crates.io/bumpalo/3.12.0 \
> >> > >> >> > +    crate://crates.io/byteorder/1.4.3 \
> >> > >> >> > +    crate://crates.io/cast/0.3.0 \
> >> > >> >> > +    crate://crates.io/cfg-if/1.0.0 \
> >> > >> >> > +    crate://crates.io/chrono/0.4.24 \
> >> > >> >> > +    crate://crates.io/ciborium-io/0.2.0 \
> >> > >> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
> >> > >> >> > +    crate://crates.io/ciborium/0.2.0 \
> >> > >> >> > +    crate://crates.io/clap/3.2.23 \
> >> > >> >> > +    crate://crates.io/clap_lex/0.2.4 \
> >> > >> >> > +    crate://crates.io/criterion-plot/0.5.0 \
> >> > >> >> > +    crate://crates.io/criterion/0.4.0 \
> >> > >> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
> >> > >> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
> >> > >> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
> >> > >> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
> >> > >> >> > +    crate://crates.io/either/1.8.1 \
> >> > >> >> > +    crate://crates.io/enumflags2/0.7.5 \
> >> > >> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
> >> > >> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
> >> > >> >> > +    crate://crates.io/futures-channel/0.3.27 \
> >> > >> >> > +    crate://crates.io/futures-core/0.3.27 \
> >> > >> >> > +    crate://crates.io/futures-executor/0.3.27 \
> >> > >> >> > +    crate://crates.io/futures-macro/0.3.27 \
> >> > >> >> > +    crate://crates.io/futures-task/0.3.27 \
> >> > >> >> > +    crate://crates.io/futures-util/0.3.27 \
> >> > >> >> > +    crate://crates.io/getrandom/0.2.8 \
> >> > >> >> > +    crate://crates.io/half/1.8.2 \
> >> > >> >> > +    crate://crates.io/hashbrown/0.12.3 \
> >> > >> >> > +    crate://crates.io/heck/0.3.3 \
> >> > >> >> > +    crate://crates.io/hermit-abi/0.1.19 \
> >> > >> >> > +    crate://crates.io/hermit-abi/0.2.6 \
> >> > >> >> > +    crate://crates.io/idna/0.3.0 \
> >> > >> >> > +    crate://crates.io/indexmap/1.9.2 \
> >> > >> >> > +    crate://crates.io/itertools/0.10.5 \
> >> > >> >> > +    crate://crates.io/itertools/0.9.0 \
> >> > >> >> > +    crate://crates.io/itoa/1.0.6 \
> >> > >> >> > +    crate://crates.io/js-sys/0.3.61 \
> >> > >> >> > +    crate://crates.io/lazy_static/1.4.0 \
> >> > >> >> > +    crate://crates.io/libc/0.2.140 \
> >> > >> >> > +    crate://crates.io/log/0.4.17 \
> >> > >> >> > +    crate://crates.io/memchr/2.5.0 \
> >> > >> >> > +    crate://crates.io/memoffset/0.8.0 \
> >> > >> >> > +    crate://crates.io/num-integer/0.1.45 \
> >> > >> >> > +    crate://crates.io/num-traits/0.2.15 \
> >> > >> >> > +    crate://crates.io/num_cpus/1.15.0 \
> >> > >> >> > +    crate://crates.io/once_cell/1.17.1 \
> >> > >> >> > +    crate://crates.io/oorandom/11.1.3 \
> >> > >> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
> >> > >> >> > +    crate://crates.io/percent-encoding/2.2.0 \
> >> > >> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
> >> > >> >> > +    crate://crates.io/pin-utils/0.1.0 \
> >> > >> >> > +    crate://crates.io/pkg-config/0.3.26 \
> >> > >> >> > +    crate://crates.io/plotters-backend/0.3.4 \
> >> > >> >> > +    crate://crates.io/plotters-svg/0.3.3 \
> >> > >> >> > +    crate://crates.io/plotters/0.3.4 \
> >> > >> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
> >> > >> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
> >> > >> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
> >> > >> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
> >> > >> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
> >> > >> >> > +    crate://crates.io/proc-macro2/1.0.53 \
> >> > >> >> > +    crate://crates.io/quote/1.0.26 \
> >> > >> >> > +    crate://crates.io/rand/0.8.5 \
> >> > >> >> > +    crate://crates.io/rand_chacha/0.3.1 \
> >> > >> >> > +    crate://crates.io/rand_core/0.6.4 \
> >> > >> >> > +    crate://crates.io/rayon-core/1.11.0 \
> >> > >> >> > +    crate://crates.io/rayon/1.7.0 \
> >> > >> >> > +    crate://crates.io/regex-syntax/0.6.29 \
> >> > >> >> > +    crate://crates.io/regex/1.7.2 \
> >> > >> >> > +    crate://crates.io/ryu/1.0.13 \
> >> > >> >> > +    crate://crates.io/same-file/1.0.6 \
> >> > >> >> > +    crate://crates.io/scopeguard/1.1.0 \
> >> > >> >> > +    crate://crates.io/serde/1.0.158 \
> >> > >> >> > +    crate://crates.io/serde_bytes/0.11.9 \
> >> > >> >> > +    crate://crates.io/serde_derive/1.0.158 \
> >> > >> >> > +    crate://crates.io/serde_json/1.0.94 \
> >> > >> >> > +    crate://crates.io/serde_repr/0.1.12 \
> >> > >> >> > +    crate://crates.io/slab/0.4.8 \
> >> > >> >> > +    crate://crates.io/static_assertions/1.1.0 \
> >> > >> >> > +    crate://crates.io/strum/0.18.0 \
> >> > >> >> > +    crate://crates.io/strum_macros/0.18.0 \
> >> > >> >> > +    crate://crates.io/syn/1.0.109 \
> >> > >> >> > +    crate://crates.io/syn/2.0.8 \
> >> > >> >> > +    crate://crates.io/system-deps/1.3.2 \
> >> > >> >> > +    crate://crates.io/textwrap/0.16.0 \
> >> > >> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
> >> > >> >> > +    crate://crates.io/thiserror/1.0.40 \
> >> > >> >> > +    crate://crates.io/time-core/0.1.0 \
> >> > >> >> > +    crate://crates.io/time-macros/0.2.8 \
> >> > >> >> > +    crate://crates.io/time/0.3.20 \
> >> > >> >> > +    crate://crates.io/tinytemplate/1.2.1 \
> >> > >> >> > +    crate://crates.io/tinyvec/1.6.0 \
> >> > >> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
> >> > >> >> > +    crate://crates.io/toml/0.5.11 \
> >> > >> >> > +    crate://crates.io/toml_datetime/0.6.1 \
> >> > >> >> > +    crate://crates.io/toml_edit/0.19.8 \
> >> > >> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
> >> > >> >> > +    crate://crates.io/unicode-ident/1.0.8 \
> >> > >> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
> >> > >> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
> >> > >> >> > +    crate://crates.io/url/2.3.1 \
> >> > >> >> > +    crate://crates.io/uuid/1.3.0 \
> >> > >> >> > +    crate://crates.io/version-compare/0.0.10 \
> >> > >> >> > +    crate://crates.io/version_check/0.9.4 \
> >> > >> >> > +    crate://crates.io/walkdir/2.3.3 \
> >> > >> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
> >> > >> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
> >> > >> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
> >> > >> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
> >> > >> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
> >> > >> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
> >> > >> >> > +    crate://crates.io/web-sys/0.3.61 \
> >> > >> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
> >> > >> >> > +    crate://crates.io/winapi-util/0.1.5 \
> >> > >> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
> >> > >> >> > +    crate://crates.io/winapi/0.3.9 \
> >> > >> >> > +    crate://crates.io/winnow/0.4.0 \
> >> > >> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
> >> > >> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
> >> > >> >> > +    git://
> github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib
> \
> >> > >> >> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys
> \
> >> > >> >> > +    git://
> github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys
> \
> >> > >> >> > +"
> >> > >> >> > +
> >> > >> >> > +SRCREV_FORMAT .= "_glib"
> >> > >> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
> >> > >> >> > +
> >> > >> >> > +SRCREV_FORMAT .= "_glib-sys"
> >> > >> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > >> >> > +
> >> > >> >> > +SRCREV_FORMAT .= "_gobject-sys"
> >> > >> >> > +SRCREV_gobject-sys =
> "5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > >> >> > diff --git
> a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> > >> >> > new file mode 100644
> >> > >> >> > index 0000000000..638ba3ed4d
> >> > >> >> > --- /dev/null
> >> > >> >> > +++
> b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
> >> > >> >> > @@ -0,0 +1,1249 @@
> >> > >> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17
> 00:00:00 2001
> >> > >> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
> >> > >> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
> >> > >> >> > +Subject: [PATCH] Tweak zvariant cargo config
> >> > >> >> > +
> >> > >> >> > +This library crate is a part of zbus project, and is aimed to
> >> > >> >> > +be published amongst the whole project.
> >> > >> >> > +
> >> > >> >> > +Nevertheless, this recipe is for showing example of real
> >> > >> >> > +code which uses a local registry via git url inside yocto
> >> > >> >> > +environment.
> >> > >> >> > +
> >> > >> >> > +I didn't find a real example of binary crate that uses git
> >> > >> >> > +dependency but it seems to me a very common use case
> >> > >> >> > +when we are working on multiple local crates that are not
> >> > >> >> > +aimed to be published on public registry.
> >> > >> >> > +
> >> > >> >> > +Long story short, this patch add a modified Cargo.toml
> >> > >> >> > +to use the zvariant_derive dependency from crates.io instead
> >> > >> >> > +of zbus local one and a pre generated Cargo.lock in order
> >> > >> >> > +to make cargo patch process inside cargo_common.bbclass work
> >> > >> >> > +
> >> > >> >> > +Upstream-Status: Inappropriate
> >> > >> >> > +Signed-off-by: Frederic Martinsons <
> frederic.martinsons@gmail.com>
> >> > >> >> > +---
> >> > >> >> > + zvariant/Cargo.lock | 1198
> +++++++++++++++++++++++++++++++++++++++++++
> >> > >> >> > + zvariant/Cargo.toml |    2 +-
> >> > >> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
> >> > >> >> > + create mode 100644 zvariant/Cargo.lock
> >> > >> >> > +
> >> > >> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
> >> > >> >> > +new file mode 100644
> >> > >> >> > +index 00000000..02a83d42
> >> > >> >> > +--- /dev/null
> >> > >> >> > ++++ b/zvariant/Cargo.lock
> >> > >> >> > +@@ -0,0 +1,1198 @@
> >> > >> >> > ++# This file is automatically @generated by Cargo.
> >> > >> >> > ++# It is not intended for manual editing.
> >> > >> >> > ++version = 3
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "anes"
> >> > >> >> > ++version = "0.1.6"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "anyhow"
> >> > >> >> > ++version = "1.0.70"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "arrayvec"
> >> > >> >> > ++version = "0.7.2"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "atty"
> >> > >> >> > ++version = "0.2.14"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "hermit-abi 0.1.19",
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "winapi",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "autocfg"
> >> > >> >> > ++version = "1.1.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "bitflags"
> >> > >> >> > ++version = "1.3.2"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "bumpalo"
> >> > >> >> > ++version = "3.12.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "byteorder"
> >> > >> >> > ++version = "1.4.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "cast"
> >> > >> >> > ++version = "0.3.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "cfg-if"
> >> > >> >> > ++version = "1.0.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "chrono"
> >> > >> >> > ++version = "0.4.24"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "num-integer",
> >> > >> >> > ++ "num-traits",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "ciborium"
> >> > >> >> > ++version = "0.2.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "ciborium-io",
> >> > >> >> > ++ "ciborium-ll",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "ciborium-io"
> >> > >> >> > ++version = "0.2.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "ciborium-ll"
> >> > >> >> > ++version = "0.2.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "ciborium-io",
> >> > >> >> > ++ "half",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "clap"
> >> > >> >> > ++version = "3.2.23"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "bitflags",
> >> > >> >> > ++ "clap_lex",
> >> > >> >> > ++ "indexmap",
> >> > >> >> > ++ "textwrap",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "clap_lex"
> >> > >> >> > ++version = "0.2.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "os_str_bytes",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "criterion"
> >> > >> >> > ++version = "0.4.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "anes",
> >> > >> >> > ++ "atty",
> >> > >> >> > ++ "cast",
> >> > >> >> > ++ "ciborium",
> >> > >> >> > ++ "clap",
> >> > >> >> > ++ "criterion-plot",
> >> > >> >> > ++ "itertools 0.10.5",
> >> > >> >> > ++ "lazy_static",
> >> > >> >> > ++ "num-traits",
> >> > >> >> > ++ "oorandom",
> >> > >> >> > ++ "plotters",
> >> > >> >> > ++ "rayon",
> >> > >> >> > ++ "regex",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++ "serde_derive",
> >> > >> >> > ++ "serde_json",
> >> > >> >> > ++ "tinytemplate",
> >> > >> >> > ++ "walkdir",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "criterion-plot"
> >> > >> >> > ++version = "0.5.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cast",
> >> > >> >> > ++ "itertools 0.10.5",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "crossbeam-channel"
> >> > >> >> > ++version = "0.5.7"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++ "crossbeam-utils",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "crossbeam-deque"
> >> > >> >> > ++version = "0.8.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++ "crossbeam-epoch",
> >> > >> >> > ++ "crossbeam-utils",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "crossbeam-epoch"
> >> > >> >> > ++version = "0.9.14"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "autocfg",
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++ "crossbeam-utils",
> >> > >> >> > ++ "memoffset",
> >> > >> >> > ++ "scopeguard",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "crossbeam-utils"
> >> > >> >> > ++version = "0.8.15"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "either"
> >> > >> >> > ++version = "1.8.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "enumflags2"
> >> > >> >> > ++version = "0.7.5"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "enumflags2_derive",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "enumflags2_derive"
> >> > >> >> > ++version = "0.7.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "form_urlencoded"
> >> > >> >> > ++version = "1.1.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "percent-encoding",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "futures-channel"
> >> > >> >> > ++version = "0.3.27"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "futures-core",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "futures-core"
> >> > >> >> > ++version = "0.3.27"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "futures-executor"
> >> > >> >> > ++version = "0.3.27"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "futures-core",
> >> > >> >> > ++ "futures-task",
> >> > >> >> > ++ "futures-util",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "futures-macro"
> >> > >> >> > ++version = "0.3.27"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "futures-task"
> >> > >> >> > ++version = "0.3.27"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "futures-util"
> >> > >> >> > ++version = "0.3.27"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "futures-core",
> >> > >> >> > ++ "futures-macro",
> >> > >> >> > ++ "futures-task",
> >> > >> >> > ++ "pin-project-lite",
> >> > >> >> > ++ "pin-utils",
> >> > >> >> > ++ "slab",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "getrandom"
> >> > >> >> > ++version = "0.2.8"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "wasi",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "glib"
> >> > >> >> > ++version = "0.10.0"
> >> > >> >> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "bitflags",
> >> > >> >> > ++ "futures-channel",
> >> > >> >> > ++ "futures-core",
> >> > >> >> > ++ "futures-executor",
> >> > >> >> > ++ "futures-task",
> >> > >> >> > ++ "futures-util",
> >> > >> >> > ++ "glib-macros",
> >> > >> >> > ++ "glib-sys",
> >> > >> >> > ++ "gobject-sys",
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "once_cell",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "glib-macros"
> >> > >> >> > ++version = "0.10.0"
> >> > >> >> > ++source = "git+
> https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93
> "
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "anyhow",
> >> > >> >> > ++ "heck",
> >> > >> >> > ++ "itertools 0.9.0",
> >> > >> >> > ++ "proc-macro-crate 0.1.5",
> >> > >> >> > ++ "proc-macro-error",
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "glib-sys"
> >> > >> >> > ++version = "0.10.0"
> >> > >> >> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "system-deps",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "gobject-sys"
> >> > >> >> > ++version = "0.10.0"
> >> > >> >> > ++source = "git+
> https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "glib-sys",
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "system-deps",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "half"
> >> > >> >> > ++version = "1.8.2"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "hashbrown"
> >> > >> >> > ++version = "0.12.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "heck"
> >> > >> >> > ++version = "0.3.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "unicode-segmentation",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "hermit-abi"
> >> > >> >> > ++version = "0.1.19"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "libc",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "hermit-abi"
> >> > >> >> > ++version = "0.2.6"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "libc",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "idna"
> >> > >> >> > ++version = "0.3.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "unicode-bidi",
> >> > >> >> > ++ "unicode-normalization",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "indexmap"
> >> > >> >> > ++version = "1.9.2"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "autocfg",
> >> > >> >> > ++ "hashbrown",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "itertools"
> >> > >> >> > ++version = "0.9.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "either",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "itertools"
> >> > >> >> > ++version = "0.10.5"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "either",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "itoa"
> >> > >> >> > ++version = "1.0.6"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "js-sys"
> >> > >> >> > ++version = "0.3.61"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "wasm-bindgen",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "lazy_static"
> >> > >> >> > ++version = "1.4.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "libc"
> >> > >> >> > ++version = "0.2.140"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "log"
> >> > >> >> > ++version = "0.4.17"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "memchr"
> >> > >> >> > ++version = "2.5.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "memoffset"
> >> > >> >> > ++version = "0.8.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "autocfg",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "num-integer"
> >> > >> >> > ++version = "0.1.45"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "autocfg",
> >> > >> >> > ++ "num-traits",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "num-traits"
> >> > >> >> > ++version = "0.2.15"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "autocfg",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "num_cpus"
> >> > >> >> > ++version = "1.15.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "hermit-abi 0.2.6",
> >> > >> >> > ++ "libc",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "once_cell"
> >> > >> >> > ++version = "1.17.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "oorandom"
> >> > >> >> > ++version = "11.1.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "os_str_bytes"
> >> > >> >> > ++version = "6.5.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "percent-encoding"
> >> > >> >> > ++version = "2.2.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "pin-project-lite"
> >> > >> >> > ++version = "0.2.9"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "pin-utils"
> >> > >> >> > ++version = "0.1.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "pkg-config"
> >> > >> >> > ++version = "0.3.26"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "plotters"
> >> > >> >> > ++version = "0.3.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "num-traits",
> >> > >> >> > ++ "plotters-backend",
> >> > >> >> > ++ "plotters-svg",
> >> > >> >> > ++ "wasm-bindgen",
> >> > >> >> > ++ "web-sys",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "plotters-backend"
> >> > >> >> > ++version = "0.3.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "plotters-svg"
> >> > >> >> > ++version = "0.3.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "plotters-backend",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "ppv-lite86"
> >> > >> >> > ++version = "0.2.17"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "proc-macro-crate"
> >> > >> >> > ++version = "0.1.5"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "toml",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "proc-macro-crate"
> >> > >> >> > ++version = "1.3.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "once_cell",
> >> > >> >> > ++ "toml_edit",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "proc-macro-error"
> >> > >> >> > ++version = "1.0.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro-error-attr",
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++ "version_check",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "proc-macro-error-attr"
> >> > >> >> > ++version = "1.0.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "version_check",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "proc-macro2"
> >> > >> >> > ++version = "1.0.53"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "unicode-ident",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "quote"
> >> > >> >> > ++version = "1.0.26"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "rand"
> >> > >> >> > ++version = "0.8.5"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "rand_chacha",
> >> > >> >> > ++ "rand_core",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "rand_chacha"
> >> > >> >> > ++version = "0.3.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "ppv-lite86",
> >> > >> >> > ++ "rand_core",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "rand_core"
> >> > >> >> > ++version = "0.6.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "getrandom",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "rayon"
> >> > >> >> > ++version = "1.7.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "either",
> >> > >> >> > ++ "rayon-core",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "rayon-core"
> >> > >> >> > ++version = "1.11.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "crossbeam-channel",
> >> > >> >> > ++ "crossbeam-deque",
> >> > >> >> > ++ "crossbeam-utils",
> >> > >> >> > ++ "num_cpus",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "regex"
> >> > >> >> > ++version = "1.7.2"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "regex-syntax",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "regex-syntax"
> >> > >> >> > ++version = "0.6.29"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "ryu"
> >> > >> >> > ++version = "1.0.13"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "same-file"
> >> > >> >> > ++version = "1.0.6"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "winapi-util",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "scopeguard"
> >> > >> >> > ++version = "1.1.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "serde"
> >> > >> >> > ++version = "1.0.158"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde_derive",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "serde_bytes"
> >> > >> >> > ++version = "0.11.9"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "serde_derive"
> >> > >> >> > ++version = "1.0.158"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 2.0.8",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "serde_json"
> >> > >> >> > ++version = "1.0.94"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "itoa",
> >> > >> >> > ++ "ryu",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "serde_repr"
> >> > >> >> > ++version = "0.1.12"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 2.0.8",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "slab"
> >> > >> >> > ++version = "0.4.8"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "autocfg",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "static_assertions"
> >> > >> >> > ++version = "1.1.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "strum"
> >> > >> >> > ++version = "0.18.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "strum_macros"
> >> > >> >> > ++version = "0.18.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "heck",
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "syn"
> >> > >> >> > ++version = "1.0.109"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "unicode-ident",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "syn"
> >> > >> >> > ++version = "2.0.8"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "unicode-ident",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "system-deps"
> >> > >> >> > ++version = "1.3.2"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "heck",
> >> > >> >> > ++ "pkg-config",
> >> > >> >> > ++ "strum",
> >> > >> >> > ++ "strum_macros",
> >> > >> >> > ++ "thiserror",
> >> > >> >> > ++ "toml",
> >> > >> >> > ++ "version-compare",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "textwrap"
> >> > >> >> > ++version = "0.16.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "thiserror"
> >> > >> >> > ++version = "1.0.40"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "thiserror-impl",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "thiserror-impl"
> >> > >> >> > ++version = "1.0.40"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 2.0.8",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "time"
> >> > >> >> > ++version = "0.3.20"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde",
> >> > >> >> > ++ "time-core",
> >> > >> >> > ++ "time-macros",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "time-core"
> >> > >> >> > ++version = "0.1.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "time-macros"
> >> > >> >> > ++version = "0.2.8"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "time-core",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "tinytemplate"
> >> > >> >> > ++version = "1.2.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde",
> >> > >> >> > ++ "serde_json",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "tinyvec"
> >> > >> >> > ++version = "1.6.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "tinyvec_macros",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "tinyvec_macros"
> >> > >> >> > ++version = "0.1.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "toml"
> >> > >> >> > ++version = "0.5.11"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "toml_datetime"
> >> > >> >> > ++version = "0.6.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "toml_edit"
> >> > >> >> > ++version = "0.19.8"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "indexmap",
> >> > >> >> > ++ "toml_datetime",
> >> > >> >> > ++ "winnow",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "unicode-bidi"
> >> > >> >> > ++version = "0.3.13"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "unicode-ident"
> >> > >> >> > ++version = "1.0.8"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "unicode-normalization"
> >> > >> >> > ++version = "0.1.22"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "tinyvec",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "unicode-segmentation"
> >> > >> >> > ++version = "1.10.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "url"
> >> > >> >> > ++version = "2.3.1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "form_urlencoded",
> >> > >> >> > ++ "idna",
> >> > >> >> > ++ "percent-encoding",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "uuid"
> >> > >> >> > ++version = "1.3.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "serde",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "version-compare"
> >> > >> >> > ++version = "0.0.10"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "version_check"
> >> > >> >> > ++version = "0.9.4"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "walkdir"
> >> > >> >> > ++version = "2.3.3"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "same-file",
> >> > >> >> > ++ "winapi-util",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "wasi"
> >> > >> >> > ++version = "0.11.0+wasi-snapshot-preview1"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "wasm-bindgen"
> >> > >> >> > ++version = "0.2.84"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "cfg-if",
> >> > >> >> > ++ "wasm-bindgen-macro",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "wasm-bindgen-backend"
> >> > >> >> > ++version = "0.2.84"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "bumpalo",
> >> > >> >> > ++ "log",
> >> > >> >> > ++ "once_cell",
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++ "wasm-bindgen-shared",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "wasm-bindgen-macro"
> >> > >> >> > ++version = "0.2.84"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "wasm-bindgen-macro-support",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "wasm-bindgen-macro-support"
> >> > >> >> > ++version = "0.2.84"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++ "wasm-bindgen-backend",
> >> > >> >> > ++ "wasm-bindgen-shared",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "wasm-bindgen-shared"
> >> > >> >> > ++version = "0.2.84"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "web-sys"
> >> > >> >> > ++version = "0.3.61"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "js-sys",
> >> > >> >> > ++ "wasm-bindgen",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[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.5"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "winapi",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[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 = "winnow"
> >> > >> >> > ++version = "0.4.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "memchr",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "zvariant"
> >> > >> >> > ++version = "3.12.0"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "arrayvec",
> >> > >> >> > ++ "byteorder",
> >> > >> >> > ++ "chrono",
> >> > >> >> > ++ "criterion",
> >> > >> >> > ++ "enumflags2",
> >> > >> >> > ++ "glib",
> >> > >> >> > ++ "libc",
> >> > >> >> > ++ "rand",
> >> > >> >> > ++ "serde",
> >> > >> >> > ++ "serde_bytes",
> >> > >> >> > ++ "serde_json",
> >> > >> >> > ++ "serde_repr",
> >> > >> >> > ++ "static_assertions",
> >> > >> >> > ++ "time",
> >> > >> >> > ++ "url",
> >> > >> >> > ++ "uuid",
> >> > >> >> > ++ "zvariant_derive",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "zvariant_derive"
> >> > >> >> > ++version = "3.12.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro-crate 1.3.1",
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++ "zvariant_utils",
> >> > >> >> > ++]
> >> > >> >> > ++
> >> > >> >> > ++[[package]]
> >> > >> >> > ++name = "zvariant_utils"
> >> > >> >> > ++version = "1.0.0"
> >> > >> >> > ++source = "registry+
> https://github.com/rust-lang/crates.io-index"
> >> > >> >> > ++checksum =
> "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
> >> > >> >> > ++dependencies = [
> >> > >> >> > ++ "proc-macro2",
> >> > >> >> > ++ "quote",
> >> > >> >> > ++ "syn 1.0.109",
> >> > >> >> > ++]
> >> > >> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
> >> > >> >> > +index 45367729..6981862a 100644
> >> > >> >> > +--- a/zvariant/Cargo.toml
> >> > >> >> > ++++ b/zvariant/Cargo.toml
> >> > >> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
> >> > >> >> > + serde = { version = "1.0", features = ["derive"] }
> >> > >> >> > + arrayvec = { version = "0.7.2", features = ["serde"],
> optional = true }
> >> > >> >> > + enumflags2 = { version = "0.7.5", features = ["serde"],
> optional = true }
> >> > >> >> > +-zvariant_derive = { version = "=3.12.0", path =
> "../zvariant_derive" }
> >> > >> >> > ++zvariant_derive = "3.12.0"
> >> > >> >> > + serde_bytes = { version = "0.11", optional = true }
> >> > >> >> > + static_assertions = "1.1.0"
> >> > >> >> > + libc = "0.2.137"
> >> > >> >> > +2.34.1
> >> > >> >> > +
> >> > >> >> > diff --git a/meta/recipes-extended/rust-example/
> zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> > >> >> > new file mode 100644
> >> > >> >> > index 0000000000..ab769b3fce
> >> > >> >> > --- /dev/null
> >> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
> >> > >> >> > @@ -0,0 +1,20 @@
> >> > >> >> > +SUMMARY = "Provides API for encoding/decoding of data
> to/from D-Bus wire format"
> >> > >> >> > +DESCRIPTION = "This crate provides API for encoding/decoding
> of data to/from D-Bus wire format.\
> >> > >> >> > +This binary wire format is simple and very efficient and
> hence useful outside of D-Bus context as well.\
> >> > >> >> > +A modified form of this format, GVariant is very commonly
> used for efficient storage of arbitrary \
> >> > >> >> > +data and is also supported by this crate."
> >> > >> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
> >> > >> >> > +LICENSE = "MIT"
> >> > >> >> > +LIC_FILES_CHKSUM =
> "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
> >> > >> >> > +
> >> > >> >> > +SRC_URI = " \
> >> > >> >> > +    git://
> gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant
> \
> >> > >> >> > +
> file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
> >> > >> >> > +"
> >> > >> >> > +
> >> > >> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
> >> > >> >> > +S = "${WORKDIR}/zvariant"
> >> > >> >> > +
> >> > >> >> > +inherit cargo cargo-update-recipe-crates
> >> > >> >> > +
> >> > >> >> > +require ${BPN}-crates.inc
> >> > >> >> > --
> >> > >> >> > 2.34.1
> >> > >> >> >
> >> > >> >> >
> >> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> > >> >> > Links: You receive all messages sent to this group.
> >> > >> >> > View/Reply Online (#179092):
> https://lists.openembedded.org/g/openembedded-core/message/179092
> >> > >> >> > Mute This Topic:
> https://lists.openembedded.org/mt/97840364/1686489
> >> > >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
> >> > >> >> > Unsubscribe:
> https://lists.openembedded.org/g/openembedded-core/unsub [
> alex.kanavin@gmail.com]
> >> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
> >> > >> >> >
> >>
> >>
> >>
> >> --
> >> Alex Kiernan
>
>
>
> --
> Alex Kiernan
>
Alex Kiernan March 27, 2023, 10:24 a.m. UTC | #10
On Mon, Mar 27, 2023 at 9:52 AM Frédéric Martinsons
<frederic.martinsons@gmail.com> wrote:
>
> True, no rust project will ever DEPENDS on the zvariant recipe and as you said
> will simply list zvariant as a crate.
> My main concern with the example was to address this comment: https://patchwork.yoctoproject.org/project/oe-core/patch/20221030173815.10212-2-alex.kiernan@gmail.com/#6450
>
> So , do you think it's still worth providing such an example ? and if yes, can I place it
> in meta-openembedded/meta-oe/recipes-extended/ ?
>

I think it definitely has value for this problem - the examples I had
were either synthetic, or internal.

>
>
> On Mon, 27 Mar 2023 at 10:42, Alex Kiernan <alex.kiernan@gmail.com> wrote:
>>
>> I think modelling meta-rust on meta-python is wrong - rust doesn't
>> package crates, they get consumed into the main recipe (which I've
>> just realised means I think we have some work on licensing to do).
>>
>> For this example, I think it's just a regular recipe which should sit
>> alongside other recipes in meta-oe; anyone who wants to consume
>> zvariant is going to list it as part of their Cargo.toml, not DEPEND
>> on this recipe.
>>
>> I guess I'm really arguing that meta-rust is purely a legacy thing at
>> this point (one which I continue to need and maintain a fork of!).
>>
>> On Mon, Mar 27, 2023 at 9:30 AM Frédéric Martinsons
>> <frederic.martinsons@gmail.com> wrote:
>> >
>> > There is a stalled merge request for this clean: https://github.com/meta-rust/meta-rust/pull/364
>> >
>> > But I think Alex is right, all needed things for rust/cargo projects seem to be already in oe-core except
>> > for examples of recipes.
>> >
>> > What about adding meta-rust in meta-openembedded which will contains the example, something like
>> >
>> > meta-rust/
>> > ├── conf
>> > │   └── layer.conf
>> > ├── COPYING.MIT
>> > ├── README
>> > └── recipes-extended
>> >     ├── zvariant
>> >     │   └── 0001-Tweak-zvariant-cargo-config.patch
>> >     ├── zvariant_3.12.0.bb
>> >     └── zvariant-crates.inc
>> >
>> >
>> > On Mon, 27 Mar 2023 at 10:19, Alex Kiernan <alex.kiernan@gmail.com> wrote:
>> >>
>> >> If you're on master I don't think there's anything useful in meta-rust
>> >> - its providing toolchains for older branches.
>> >>
>> >> On Mon, Mar 27, 2023 at 7:40 AM Alexander Kanavin
>> >> <alex.kanavin@gmail.com> wrote:
>> >> >
>> >> > You could meanwhile review meta-rust, and see what is useful and what
>> >> > is obsolete perhaps? I see it still carries toolchain recipes for
>> >> > example, I have no idea why.
>> >> >
>> >> > Alex
>> >> >
>> >> > On Mon, 27 Mar 2023 at 06:09, Frédéric Martinsons
>> >> > <frederic.martinsons@gmail.com> wrote:
>> >> > >
>> >> > > Ok, should I work on this cleaning of meta-rust and merging in meta-oe ? or should I wait for other opinions ?
>> >> > >
>> >> > > On Sun, 26 Mar 2023 at 18:55, Alexander Kanavin <alex.kanavin@gmail.com> wrote:
>> >> > >>
>> >> > >> rust-hello-world is installed into test images, and has a runtime test
>> >> > >> to verify that the toolchain produces working binaries:
>> >> > >> meta/lib/oeqa/runtime/cases/rust.py
>> >> > >>
>> >> > >> I thought meta-rust could be cleaned up, and added to meta-oe perhaps?
>> >> > >> Same as meta-perl/meta-python.
>> >> > >> https://github.com/meta-rust/meta-rust
>> >> > >>
>> >> > >> Alex
>> >> > >>
>> >> > >> On Sat, 25 Mar 2023 at 21:43, Frédéric Martinsons
>> >> > >> <frederic.martinsons@gmail.com> wrote:
>> >> > >> >
>> >> > >> > I thought that would be treated the same as rust-hello-world_git.bb which is in oe-core.
>> >> > >> >
>> >> > >> > Anyway, I don't mind placing it elsewhere, which layer do you think this recipe would land?
>> >> > >> >
>> >> > >> >
>> >> > >> >
>> >> > >> > Le sam. 25 mars 2023, 19:52, Alexander Kanavin <alex.kanavin@gmail.com> a écrit :
>> >> > >> >>
>> >> > >> >> I don't think this should be going in oe-core, as it's not actually
>> >> > >> >> used by anything, or in any automated tests. But you can place it in a
>> >> > >> >> separate layer.
>> >> > >> >>
>> >> > >> >> Alex
>> >> > >> >>
>> >> > >> >> On Sat, 25 Mar 2023 at 10:01, Frederic Martinsons
>> >> > >> >> <frederic.martinsons@gmail.com> wrote:
>> >> > >> >> >
>> >> > >> >> > From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > >> >> >
>> >> > >> >> > This recipe is for showing an "real world" example of
>> >> > >> >> > a crate that depends on some git repositories.
>> >> > >> >> >
>> >> > >> >> > Usually, this kind of crate is built within a global
>> >> > >> >> > workspace (here it is the zbus project) and so
>> >> > >> >> > doesn't need a Cargo.lock on its own.
>> >> > >> >> >
>> >> > >> >> > For the sake of the demonstration, I had to add
>> >> > >> >> > a patch for probiding a Cargo.lock and modifying
>> >> > >> >> > zvariant_deriver to get it from crates.io instead
>> >> > >> >> > of pulling locally with a relative path
>> >> > >> >> >
>> >> > >> >> > The use case where the crate had some git repository
>> >> > >> >> > in dependency is very common for "private" crate that
>> >> > >> >> > are not aimed to be published on crate.io.
>> >> > >> >> > When the project grow bigger, it is common to have
>> >> > >> >> > a bin and multiple lib developped in parallel, and these
>> >> > >> >> > libs are surely on a git repostitory.
>> >> > >> >> >
>> >> > >> >> > Hence the need of this support in oe-core.
>> >> > >> >> >
>> >> > >> >> > Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > >> >> > ---
>> >> > >> >> >  .../rust-example/zvariant-crates.inc          |  140 ++
>> >> > >> >> >  .../0001-Tweak-zvariant-cargo-config.patch    | 1249 +++++++++++++++++
>> >> > >> >> >  .../rust-example/zvariant_3.12.0.bb           |   20 +
>> >> > >> >> >  3 files changed, 1409 insertions(+)
>> >> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant-crates.inc
>> >> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >> > >> >> >  create mode 100644 meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >> > >> >> >
>> >> > >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> >> > >> >> > new file mode 100644
>> >> > >> >> > index 0000000000..297a784661
>> >> > >> >> > --- /dev/null
>> >> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
>> >> > >> >> > @@ -0,0 +1,140 @@
>> >> > >> >> > +SRC_URI += " \
>> >> > >> >> > +    crate://crates.io/anes/0.1.6 \
>> >> > >> >> > +    crate://crates.io/anyhow/1.0.70 \
>> >> > >> >> > +    crate://crates.io/arrayvec/0.7.2 \
>> >> > >> >> > +    crate://crates.io/atty/0.2.14 \
>> >> > >> >> > +    crate://crates.io/autocfg/1.1.0 \
>> >> > >> >> > +    crate://crates.io/bitflags/1.3.2 \
>> >> > >> >> > +    crate://crates.io/bumpalo/3.12.0 \
>> >> > >> >> > +    crate://crates.io/byteorder/1.4.3 \
>> >> > >> >> > +    crate://crates.io/cast/0.3.0 \
>> >> > >> >> > +    crate://crates.io/cfg-if/1.0.0 \
>> >> > >> >> > +    crate://crates.io/chrono/0.4.24 \
>> >> > >> >> > +    crate://crates.io/ciborium-io/0.2.0 \
>> >> > >> >> > +    crate://crates.io/ciborium-ll/0.2.0 \
>> >> > >> >> > +    crate://crates.io/ciborium/0.2.0 \
>> >> > >> >> > +    crate://crates.io/clap/3.2.23 \
>> >> > >> >> > +    crate://crates.io/clap_lex/0.2.4 \
>> >> > >> >> > +    crate://crates.io/criterion-plot/0.5.0 \
>> >> > >> >> > +    crate://crates.io/criterion/0.4.0 \
>> >> > >> >> > +    crate://crates.io/crossbeam-channel/0.5.7 \
>> >> > >> >> > +    crate://crates.io/crossbeam-deque/0.8.3 \
>> >> > >> >> > +    crate://crates.io/crossbeam-epoch/0.9.14 \
>> >> > >> >> > +    crate://crates.io/crossbeam-utils/0.8.15 \
>> >> > >> >> > +    crate://crates.io/either/1.8.1 \
>> >> > >> >> > +    crate://crates.io/enumflags2/0.7.5 \
>> >> > >> >> > +    crate://crates.io/enumflags2_derive/0.7.4 \
>> >> > >> >> > +    crate://crates.io/form_urlencoded/1.1.0 \
>> >> > >> >> > +    crate://crates.io/futures-channel/0.3.27 \
>> >> > >> >> > +    crate://crates.io/futures-core/0.3.27 \
>> >> > >> >> > +    crate://crates.io/futures-executor/0.3.27 \
>> >> > >> >> > +    crate://crates.io/futures-macro/0.3.27 \
>> >> > >> >> > +    crate://crates.io/futures-task/0.3.27 \
>> >> > >> >> > +    crate://crates.io/futures-util/0.3.27 \
>> >> > >> >> > +    crate://crates.io/getrandom/0.2.8 \
>> >> > >> >> > +    crate://crates.io/half/1.8.2 \
>> >> > >> >> > +    crate://crates.io/hashbrown/0.12.3 \
>> >> > >> >> > +    crate://crates.io/heck/0.3.3 \
>> >> > >> >> > +    crate://crates.io/hermit-abi/0.1.19 \
>> >> > >> >> > +    crate://crates.io/hermit-abi/0.2.6 \
>> >> > >> >> > +    crate://crates.io/idna/0.3.0 \
>> >> > >> >> > +    crate://crates.io/indexmap/1.9.2 \
>> >> > >> >> > +    crate://crates.io/itertools/0.10.5 \
>> >> > >> >> > +    crate://crates.io/itertools/0.9.0 \
>> >> > >> >> > +    crate://crates.io/itoa/1.0.6 \
>> >> > >> >> > +    crate://crates.io/js-sys/0.3.61 \
>> >> > >> >> > +    crate://crates.io/lazy_static/1.4.0 \
>> >> > >> >> > +    crate://crates.io/libc/0.2.140 \
>> >> > >> >> > +    crate://crates.io/log/0.4.17 \
>> >> > >> >> > +    crate://crates.io/memchr/2.5.0 \
>> >> > >> >> > +    crate://crates.io/memoffset/0.8.0 \
>> >> > >> >> > +    crate://crates.io/num-integer/0.1.45 \
>> >> > >> >> > +    crate://crates.io/num-traits/0.2.15 \
>> >> > >> >> > +    crate://crates.io/num_cpus/1.15.0 \
>> >> > >> >> > +    crate://crates.io/once_cell/1.17.1 \
>> >> > >> >> > +    crate://crates.io/oorandom/11.1.3 \
>> >> > >> >> > +    crate://crates.io/os_str_bytes/6.5.0 \
>> >> > >> >> > +    crate://crates.io/percent-encoding/2.2.0 \
>> >> > >> >> > +    crate://crates.io/pin-project-lite/0.2.9 \
>> >> > >> >> > +    crate://crates.io/pin-utils/0.1.0 \
>> >> > >> >> > +    crate://crates.io/pkg-config/0.3.26 \
>> >> > >> >> > +    crate://crates.io/plotters-backend/0.3.4 \
>> >> > >> >> > +    crate://crates.io/plotters-svg/0.3.3 \
>> >> > >> >> > +    crate://crates.io/plotters/0.3.4 \
>> >> > >> >> > +    crate://crates.io/ppv-lite86/0.2.17 \
>> >> > >> >> > +    crate://crates.io/proc-macro-crate/0.1.5 \
>> >> > >> >> > +    crate://crates.io/proc-macro-crate/1.3.1 \
>> >> > >> >> > +    crate://crates.io/proc-macro-error-attr/1.0.4 \
>> >> > >> >> > +    crate://crates.io/proc-macro-error/1.0.4 \
>> >> > >> >> > +    crate://crates.io/proc-macro2/1.0.53 \
>> >> > >> >> > +    crate://crates.io/quote/1.0.26 \
>> >> > >> >> > +    crate://crates.io/rand/0.8.5 \
>> >> > >> >> > +    crate://crates.io/rand_chacha/0.3.1 \
>> >> > >> >> > +    crate://crates.io/rand_core/0.6.4 \
>> >> > >> >> > +    crate://crates.io/rayon-core/1.11.0 \
>> >> > >> >> > +    crate://crates.io/rayon/1.7.0 \
>> >> > >> >> > +    crate://crates.io/regex-syntax/0.6.29 \
>> >> > >> >> > +    crate://crates.io/regex/1.7.2 \
>> >> > >> >> > +    crate://crates.io/ryu/1.0.13 \
>> >> > >> >> > +    crate://crates.io/same-file/1.0.6 \
>> >> > >> >> > +    crate://crates.io/scopeguard/1.1.0 \
>> >> > >> >> > +    crate://crates.io/serde/1.0.158 \
>> >> > >> >> > +    crate://crates.io/serde_bytes/0.11.9 \
>> >> > >> >> > +    crate://crates.io/serde_derive/1.0.158 \
>> >> > >> >> > +    crate://crates.io/serde_json/1.0.94 \
>> >> > >> >> > +    crate://crates.io/serde_repr/0.1.12 \
>> >> > >> >> > +    crate://crates.io/slab/0.4.8 \
>> >> > >> >> > +    crate://crates.io/static_assertions/1.1.0 \
>> >> > >> >> > +    crate://crates.io/strum/0.18.0 \
>> >> > >> >> > +    crate://crates.io/strum_macros/0.18.0 \
>> >> > >> >> > +    crate://crates.io/syn/1.0.109 \
>> >> > >> >> > +    crate://crates.io/syn/2.0.8 \
>> >> > >> >> > +    crate://crates.io/system-deps/1.3.2 \
>> >> > >> >> > +    crate://crates.io/textwrap/0.16.0 \
>> >> > >> >> > +    crate://crates.io/thiserror-impl/1.0.40 \
>> >> > >> >> > +    crate://crates.io/thiserror/1.0.40 \
>> >> > >> >> > +    crate://crates.io/time-core/0.1.0 \
>> >> > >> >> > +    crate://crates.io/time-macros/0.2.8 \
>> >> > >> >> > +    crate://crates.io/time/0.3.20 \
>> >> > >> >> > +    crate://crates.io/tinytemplate/1.2.1 \
>> >> > >> >> > +    crate://crates.io/tinyvec/1.6.0 \
>> >> > >> >> > +    crate://crates.io/tinyvec_macros/0.1.1 \
>> >> > >> >> > +    crate://crates.io/toml/0.5.11 \
>> >> > >> >> > +    crate://crates.io/toml_datetime/0.6.1 \
>> >> > >> >> > +    crate://crates.io/toml_edit/0.19.8 \
>> >> > >> >> > +    crate://crates.io/unicode-bidi/0.3.13 \
>> >> > >> >> > +    crate://crates.io/unicode-ident/1.0.8 \
>> >> > >> >> > +    crate://crates.io/unicode-normalization/0.1.22 \
>> >> > >> >> > +    crate://crates.io/unicode-segmentation/1.10.1 \
>> >> > >> >> > +    crate://crates.io/url/2.3.1 \
>> >> > >> >> > +    crate://crates.io/uuid/1.3.0 \
>> >> > >> >> > +    crate://crates.io/version-compare/0.0.10 \
>> >> > >> >> > +    crate://crates.io/version_check/0.9.4 \
>> >> > >> >> > +    crate://crates.io/walkdir/2.3.3 \
>> >> > >> >> > +    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
>> >> > >> >> > +    crate://crates.io/wasm-bindgen-backend/0.2.84 \
>> >> > >> >> > +    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
>> >> > >> >> > +    crate://crates.io/wasm-bindgen-macro/0.2.84 \
>> >> > >> >> > +    crate://crates.io/wasm-bindgen-shared/0.2.84 \
>> >> > >> >> > +    crate://crates.io/wasm-bindgen/0.2.84 \
>> >> > >> >> > +    crate://crates.io/web-sys/0.3.61 \
>> >> > >> >> > +    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
>> >> > >> >> > +    crate://crates.io/winapi-util/0.1.5 \
>> >> > >> >> > +    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
>> >> > >> >> > +    crate://crates.io/winapi/0.3.9 \
>> >> > >> >> > +    crate://crates.io/winnow/0.4.0 \
>> >> > >> >> > +    crate://crates.io/zvariant_derive/3.12.0 \
>> >> > >> >> > +    crate://crates.io/zvariant_utils/1.0.0 \
>> >> > >> >> > +    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
>> >> > >> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
>> >> > >> >> > +    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
>> >> > >> >> > +"
>> >> > >> >> > +
>> >> > >> >> > +SRCREV_FORMAT .= "_glib"
>> >> > >> >> > +SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> >> > >> >> > +
>> >> > >> >> > +SRCREV_FORMAT .= "_glib-sys"
>> >> > >> >> > +SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > >> >> > +
>> >> > >> >> > +SRCREV_FORMAT .= "_gobject-sys"
>> >> > >> >> > +SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >> > >> >> > new file mode 100644
>> >> > >> >> > index 0000000000..638ba3ed4d
>> >> > >> >> > --- /dev/null
>> >> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
>> >> > >> >> > @@ -0,0 +1,1249 @@
>> >> > >> >> > +From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
>> >> > >> >> > +From: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > >> >> > +Date: Thu, 23 Mar 2023 07:12:37 +0100
>> >> > >> >> > +Subject: [PATCH] Tweak zvariant cargo config
>> >> > >> >> > +
>> >> > >> >> > +This library crate is a part of zbus project, and is aimed to
>> >> > >> >> > +be published amongst the whole project.
>> >> > >> >> > +
>> >> > >> >> > +Nevertheless, this recipe is for showing example of real
>> >> > >> >> > +code which uses a local registry via git url inside yocto
>> >> > >> >> > +environment.
>> >> > >> >> > +
>> >> > >> >> > +I didn't find a real example of binary crate that uses git
>> >> > >> >> > +dependency but it seems to me a very common use case
>> >> > >> >> > +when we are working on multiple local crates that are not
>> >> > >> >> > +aimed to be published on public registry.
>> >> > >> >> > +
>> >> > >> >> > +Long story short, this patch add a modified Cargo.toml
>> >> > >> >> > +to use the zvariant_derive dependency from crates.io instead
>> >> > >> >> > +of zbus local one and a pre generated Cargo.lock in order
>> >> > >> >> > +to make cargo patch process inside cargo_common.bbclass work
>> >> > >> >> > +
>> >> > >> >> > +Upstream-Status: Inappropriate
>> >> > >> >> > +Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
>> >> > >> >> > +---
>> >> > >> >> > + zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
>> >> > >> >> > + zvariant/Cargo.toml |    2 +-
>> >> > >> >> > + 2 files changed, 1199 insertions(+), 1 deletion(-)
>> >> > >> >> > + create mode 100644 zvariant/Cargo.lock
>> >> > >> >> > +
>> >> > >> >> > +diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
>> >> > >> >> > +new file mode 100644
>> >> > >> >> > +index 00000000..02a83d42
>> >> > >> >> > +--- /dev/null
>> >> > >> >> > ++++ b/zvariant/Cargo.lock
>> >> > >> >> > +@@ -0,0 +1,1198 @@
>> >> > >> >> > ++# This file is automatically @generated by Cargo.
>> >> > >> >> > ++# It is not intended for manual editing.
>> >> > >> >> > ++version = 3
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "anes"
>> >> > >> >> > ++version = "0.1.6"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "anyhow"
>> >> > >> >> > ++version = "1.0.70"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "arrayvec"
>> >> > >> >> > ++version = "0.7.2"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "atty"
>> >> > >> >> > ++version = "0.2.14"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "hermit-abi 0.1.19",
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "winapi",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "autocfg"
>> >> > >> >> > ++version = "1.1.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "bitflags"
>> >> > >> >> > ++version = "1.3.2"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "bumpalo"
>> >> > >> >> > ++version = "3.12.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "byteorder"
>> >> > >> >> > ++version = "1.4.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "cast"
>> >> > >> >> > ++version = "0.3.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "cfg-if"
>> >> > >> >> > ++version = "1.0.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "chrono"
>> >> > >> >> > ++version = "0.4.24"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "num-integer",
>> >> > >> >> > ++ "num-traits",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "ciborium"
>> >> > >> >> > ++version = "0.2.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "ciborium-io",
>> >> > >> >> > ++ "ciborium-ll",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "ciborium-io"
>> >> > >> >> > ++version = "0.2.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "ciborium-ll"
>> >> > >> >> > ++version = "0.2.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "ciborium-io",
>> >> > >> >> > ++ "half",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "clap"
>> >> > >> >> > ++version = "3.2.23"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "bitflags",
>> >> > >> >> > ++ "clap_lex",
>> >> > >> >> > ++ "indexmap",
>> >> > >> >> > ++ "textwrap",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "clap_lex"
>> >> > >> >> > ++version = "0.2.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "os_str_bytes",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "criterion"
>> >> > >> >> > ++version = "0.4.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "anes",
>> >> > >> >> > ++ "atty",
>> >> > >> >> > ++ "cast",
>> >> > >> >> > ++ "ciborium",
>> >> > >> >> > ++ "clap",
>> >> > >> >> > ++ "criterion-plot",
>> >> > >> >> > ++ "itertools 0.10.5",
>> >> > >> >> > ++ "lazy_static",
>> >> > >> >> > ++ "num-traits",
>> >> > >> >> > ++ "oorandom",
>> >> > >> >> > ++ "plotters",
>> >> > >> >> > ++ "rayon",
>> >> > >> >> > ++ "regex",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++ "serde_derive",
>> >> > >> >> > ++ "serde_json",
>> >> > >> >> > ++ "tinytemplate",
>> >> > >> >> > ++ "walkdir",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "criterion-plot"
>> >> > >> >> > ++version = "0.5.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cast",
>> >> > >> >> > ++ "itertools 0.10.5",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "crossbeam-channel"
>> >> > >> >> > ++version = "0.5.7"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++ "crossbeam-utils",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "crossbeam-deque"
>> >> > >> >> > ++version = "0.8.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++ "crossbeam-epoch",
>> >> > >> >> > ++ "crossbeam-utils",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "crossbeam-epoch"
>> >> > >> >> > ++version = "0.9.14"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "autocfg",
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++ "crossbeam-utils",
>> >> > >> >> > ++ "memoffset",
>> >> > >> >> > ++ "scopeguard",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "crossbeam-utils"
>> >> > >> >> > ++version = "0.8.15"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "either"
>> >> > >> >> > ++version = "1.8.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "enumflags2"
>> >> > >> >> > ++version = "0.7.5"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "enumflags2_derive",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "enumflags2_derive"
>> >> > >> >> > ++version = "0.7.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "form_urlencoded"
>> >> > >> >> > ++version = "1.1.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "percent-encoding",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "futures-channel"
>> >> > >> >> > ++version = "0.3.27"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "futures-core",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "futures-core"
>> >> > >> >> > ++version = "0.3.27"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "futures-executor"
>> >> > >> >> > ++version = "0.3.27"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "futures-core",
>> >> > >> >> > ++ "futures-task",
>> >> > >> >> > ++ "futures-util",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "futures-macro"
>> >> > >> >> > ++version = "0.3.27"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "futures-task"
>> >> > >> >> > ++version = "0.3.27"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "futures-util"
>> >> > >> >> > ++version = "0.3.27"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "futures-core",
>> >> > >> >> > ++ "futures-macro",
>> >> > >> >> > ++ "futures-task",
>> >> > >> >> > ++ "pin-project-lite",
>> >> > >> >> > ++ "pin-utils",
>> >> > >> >> > ++ "slab",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "getrandom"
>> >> > >> >> > ++version = "0.2.8"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "wasi",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "glib"
>> >> > >> >> > ++version = "0.10.0"
>> >> > >> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "bitflags",
>> >> > >> >> > ++ "futures-channel",
>> >> > >> >> > ++ "futures-core",
>> >> > >> >> > ++ "futures-executor",
>> >> > >> >> > ++ "futures-task",
>> >> > >> >> > ++ "futures-util",
>> >> > >> >> > ++ "glib-macros",
>> >> > >> >> > ++ "glib-sys",
>> >> > >> >> > ++ "gobject-sys",
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "once_cell",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "glib-macros"
>> >> > >> >> > ++version = "0.10.0"
>> >> > >> >> > ++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "anyhow",
>> >> > >> >> > ++ "heck",
>> >> > >> >> > ++ "itertools 0.9.0",
>> >> > >> >> > ++ "proc-macro-crate 0.1.5",
>> >> > >> >> > ++ "proc-macro-error",
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "glib-sys"
>> >> > >> >> > ++version = "0.10.0"
>> >> > >> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "system-deps",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "gobject-sys"
>> >> > >> >> > ++version = "0.10.0"
>> >> > >> >> > ++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "glib-sys",
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "system-deps",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "half"
>> >> > >> >> > ++version = "1.8.2"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "hashbrown"
>> >> > >> >> > ++version = "0.12.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "heck"
>> >> > >> >> > ++version = "0.3.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "unicode-segmentation",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "hermit-abi"
>> >> > >> >> > ++version = "0.1.19"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "hermit-abi"
>> >> > >> >> > ++version = "0.2.6"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "idna"
>> >> > >> >> > ++version = "0.3.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "unicode-bidi",
>> >> > >> >> > ++ "unicode-normalization",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "indexmap"
>> >> > >> >> > ++version = "1.9.2"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "autocfg",
>> >> > >> >> > ++ "hashbrown",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "itertools"
>> >> > >> >> > ++version = "0.9.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "either",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "itertools"
>> >> > >> >> > ++version = "0.10.5"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "either",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "itoa"
>> >> > >> >> > ++version = "1.0.6"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "js-sys"
>> >> > >> >> > ++version = "0.3.61"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "wasm-bindgen",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "lazy_static"
>> >> > >> >> > ++version = "1.4.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "libc"
>> >> > >> >> > ++version = "0.2.140"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "log"
>> >> > >> >> > ++version = "0.4.17"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "memchr"
>> >> > >> >> > ++version = "2.5.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "memoffset"
>> >> > >> >> > ++version = "0.8.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "autocfg",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "num-integer"
>> >> > >> >> > ++version = "0.1.45"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "autocfg",
>> >> > >> >> > ++ "num-traits",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "num-traits"
>> >> > >> >> > ++version = "0.2.15"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "autocfg",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "num_cpus"
>> >> > >> >> > ++version = "1.15.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "hermit-abi 0.2.6",
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "once_cell"
>> >> > >> >> > ++version = "1.17.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "oorandom"
>> >> > >> >> > ++version = "11.1.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "os_str_bytes"
>> >> > >> >> > ++version = "6.5.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "percent-encoding"
>> >> > >> >> > ++version = "2.2.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "pin-project-lite"
>> >> > >> >> > ++version = "0.2.9"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "pin-utils"
>> >> > >> >> > ++version = "0.1.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "pkg-config"
>> >> > >> >> > ++version = "0.3.26"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "plotters"
>> >> > >> >> > ++version = "0.3.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "num-traits",
>> >> > >> >> > ++ "plotters-backend",
>> >> > >> >> > ++ "plotters-svg",
>> >> > >> >> > ++ "wasm-bindgen",
>> >> > >> >> > ++ "web-sys",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "plotters-backend"
>> >> > >> >> > ++version = "0.3.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "plotters-svg"
>> >> > >> >> > ++version = "0.3.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "plotters-backend",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "ppv-lite86"
>> >> > >> >> > ++version = "0.2.17"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "proc-macro-crate"
>> >> > >> >> > ++version = "0.1.5"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "toml",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "proc-macro-crate"
>> >> > >> >> > ++version = "1.3.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "once_cell",
>> >> > >> >> > ++ "toml_edit",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "proc-macro-error"
>> >> > >> >> > ++version = "1.0.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro-error-attr",
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++ "version_check",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "proc-macro-error-attr"
>> >> > >> >> > ++version = "1.0.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "version_check",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "proc-macro2"
>> >> > >> >> > ++version = "1.0.53"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "unicode-ident",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "quote"
>> >> > >> >> > ++version = "1.0.26"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "rand"
>> >> > >> >> > ++version = "0.8.5"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "rand_chacha",
>> >> > >> >> > ++ "rand_core",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "rand_chacha"
>> >> > >> >> > ++version = "0.3.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "ppv-lite86",
>> >> > >> >> > ++ "rand_core",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "rand_core"
>> >> > >> >> > ++version = "0.6.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "getrandom",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "rayon"
>> >> > >> >> > ++version = "1.7.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "either",
>> >> > >> >> > ++ "rayon-core",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "rayon-core"
>> >> > >> >> > ++version = "1.11.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "crossbeam-channel",
>> >> > >> >> > ++ "crossbeam-deque",
>> >> > >> >> > ++ "crossbeam-utils",
>> >> > >> >> > ++ "num_cpus",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "regex"
>> >> > >> >> > ++version = "1.7.2"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "regex-syntax",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "regex-syntax"
>> >> > >> >> > ++version = "0.6.29"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "ryu"
>> >> > >> >> > ++version = "1.0.13"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "same-file"
>> >> > >> >> > ++version = "1.0.6"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "winapi-util",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "scopeguard"
>> >> > >> >> > ++version = "1.1.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "serde"
>> >> > >> >> > ++version = "1.0.158"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde_derive",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "serde_bytes"
>> >> > >> >> > ++version = "0.11.9"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "serde_derive"
>> >> > >> >> > ++version = "1.0.158"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 2.0.8",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "serde_json"
>> >> > >> >> > ++version = "1.0.94"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "itoa",
>> >> > >> >> > ++ "ryu",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "serde_repr"
>> >> > >> >> > ++version = "0.1.12"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 2.0.8",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "slab"
>> >> > >> >> > ++version = "0.4.8"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "autocfg",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "static_assertions"
>> >> > >> >> > ++version = "1.1.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "strum"
>> >> > >> >> > ++version = "0.18.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "strum_macros"
>> >> > >> >> > ++version = "0.18.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "heck",
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "syn"
>> >> > >> >> > ++version = "1.0.109"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "unicode-ident",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "syn"
>> >> > >> >> > ++version = "2.0.8"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "unicode-ident",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "system-deps"
>> >> > >> >> > ++version = "1.3.2"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "heck",
>> >> > >> >> > ++ "pkg-config",
>> >> > >> >> > ++ "strum",
>> >> > >> >> > ++ "strum_macros",
>> >> > >> >> > ++ "thiserror",
>> >> > >> >> > ++ "toml",
>> >> > >> >> > ++ "version-compare",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "textwrap"
>> >> > >> >> > ++version = "0.16.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "thiserror"
>> >> > >> >> > ++version = "1.0.40"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "thiserror-impl",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "thiserror-impl"
>> >> > >> >> > ++version = "1.0.40"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 2.0.8",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "time"
>> >> > >> >> > ++version = "0.3.20"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++ "time-core",
>> >> > >> >> > ++ "time-macros",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "time-core"
>> >> > >> >> > ++version = "0.1.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "time-macros"
>> >> > >> >> > ++version = "0.2.8"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "time-core",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "tinytemplate"
>> >> > >> >> > ++version = "1.2.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++ "serde_json",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "tinyvec"
>> >> > >> >> > ++version = "1.6.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "tinyvec_macros",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "tinyvec_macros"
>> >> > >> >> > ++version = "0.1.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "toml"
>> >> > >> >> > ++version = "0.5.11"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "toml_datetime"
>> >> > >> >> > ++version = "0.6.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "toml_edit"
>> >> > >> >> > ++version = "0.19.8"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "indexmap",
>> >> > >> >> > ++ "toml_datetime",
>> >> > >> >> > ++ "winnow",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "unicode-bidi"
>> >> > >> >> > ++version = "0.3.13"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "unicode-ident"
>> >> > >> >> > ++version = "1.0.8"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "unicode-normalization"
>> >> > >> >> > ++version = "0.1.22"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "tinyvec",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "unicode-segmentation"
>> >> > >> >> > ++version = "1.10.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "url"
>> >> > >> >> > ++version = "2.3.1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "form_urlencoded",
>> >> > >> >> > ++ "idna",
>> >> > >> >> > ++ "percent-encoding",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "uuid"
>> >> > >> >> > ++version = "1.3.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "version-compare"
>> >> > >> >> > ++version = "0.0.10"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "version_check"
>> >> > >> >> > ++version = "0.9.4"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "walkdir"
>> >> > >> >> > ++version = "2.3.3"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "same-file",
>> >> > >> >> > ++ "winapi-util",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "wasi"
>> >> > >> >> > ++version = "0.11.0+wasi-snapshot-preview1"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "wasm-bindgen"
>> >> > >> >> > ++version = "0.2.84"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "cfg-if",
>> >> > >> >> > ++ "wasm-bindgen-macro",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "wasm-bindgen-backend"
>> >> > >> >> > ++version = "0.2.84"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "bumpalo",
>> >> > >> >> > ++ "log",
>> >> > >> >> > ++ "once_cell",
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++ "wasm-bindgen-shared",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "wasm-bindgen-macro"
>> >> > >> >> > ++version = "0.2.84"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "wasm-bindgen-macro-support",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "wasm-bindgen-macro-support"
>> >> > >> >> > ++version = "0.2.84"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++ "wasm-bindgen-backend",
>> >> > >> >> > ++ "wasm-bindgen-shared",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "wasm-bindgen-shared"
>> >> > >> >> > ++version = "0.2.84"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "web-sys"
>> >> > >> >> > ++version = "0.3.61"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "js-sys",
>> >> > >> >> > ++ "wasm-bindgen",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[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.5"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "winapi",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[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 = "winnow"
>> >> > >> >> > ++version = "0.4.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "memchr",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "zvariant"
>> >> > >> >> > ++version = "3.12.0"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "arrayvec",
>> >> > >> >> > ++ "byteorder",
>> >> > >> >> > ++ "chrono",
>> >> > >> >> > ++ "criterion",
>> >> > >> >> > ++ "enumflags2",
>> >> > >> >> > ++ "glib",
>> >> > >> >> > ++ "libc",
>> >> > >> >> > ++ "rand",
>> >> > >> >> > ++ "serde",
>> >> > >> >> > ++ "serde_bytes",
>> >> > >> >> > ++ "serde_json",
>> >> > >> >> > ++ "serde_repr",
>> >> > >> >> > ++ "static_assertions",
>> >> > >> >> > ++ "time",
>> >> > >> >> > ++ "url",
>> >> > >> >> > ++ "uuid",
>> >> > >> >> > ++ "zvariant_derive",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "zvariant_derive"
>> >> > >> >> > ++version = "3.12.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro-crate 1.3.1",
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++ "zvariant_utils",
>> >> > >> >> > ++]
>> >> > >> >> > ++
>> >> > >> >> > ++[[package]]
>> >> > >> >> > ++name = "zvariant_utils"
>> >> > >> >> > ++version = "1.0.0"
>> >> > >> >> > ++source = "registry+https://github.com/rust-lang/crates.io-index"
>> >> > >> >> > ++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
>> >> > >> >> > ++dependencies = [
>> >> > >> >> > ++ "proc-macro2",
>> >> > >> >> > ++ "quote",
>> >> > >> >> > ++ "syn 1.0.109",
>> >> > >> >> > ++]
>> >> > >> >> > +diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
>> >> > >> >> > +index 45367729..6981862a 100644
>> >> > >> >> > +--- a/zvariant/Cargo.toml
>> >> > >> >> > ++++ b/zvariant/Cargo.toml
>> >> > >> >> > +@@ -27,7 +27,7 @@ byteorder = "1.4.3"
>> >> > >> >> > + serde = { version = "1.0", features = ["derive"] }
>> >> > >> >> > + arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
>> >> > >> >> > + enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
>> >> > >> >> > +-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
>> >> > >> >> > ++zvariant_derive = "3.12.0"
>> >> > >> >> > + serde_bytes = { version = "0.11", optional = true }
>> >> > >> >> > + static_assertions = "1.1.0"
>> >> > >> >> > + libc = "0.2.137"
>> >> > >> >> > +2.34.1
>> >> > >> >> > +
>> >> > >> >> > diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >> > >> >> > new file mode 100644
>> >> > >> >> > index 0000000000..ab769b3fce
>> >> > >> >> > --- /dev/null
>> >> > >> >> > +++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
>> >> > >> >> > @@ -0,0 +1,20 @@
>> >> > >> >> > +SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
>> >> > >> >> > +DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
>> >> > >> >> > +This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
>> >> > >> >> > +A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
>> >> > >> >> > +data and is also supported by this crate."
>> >> > >> >> > +HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
>> >> > >> >> > +LICENSE = "MIT"
>> >> > >> >> > +LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
>> >> > >> >> > +
>> >> > >> >> > +SRC_URI = " \
>> >> > >> >> > +    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
>> >> > >> >> > +    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
>> >> > >> >> > +"
>> >> > >> >> > +
>> >> > >> >> > +SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
>> >> > >> >> > +S = "${WORKDIR}/zvariant"
>> >> > >> >> > +
>> >> > >> >> > +inherit cargo cargo-update-recipe-crates
>> >> > >> >> > +
>> >> > >> >> > +require ${BPN}-crates.inc
>> >> > >> >> > --
>> >> > >> >> > 2.34.1
>> >> > >> >> >
>> >> > >> >> >
>> >> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> >> > >> >> > Links: You receive all messages sent to this group.
>> >> > >> >> > View/Reply Online (#179092): https://lists.openembedded.org/g/openembedded-core/message/179092
>> >> > >> >> > Mute This Topic: https://lists.openembedded.org/mt/97840364/1686489
>> >> > >> >> > Group Owner: openembedded-core+owner@lists.openembedded.org
>> >> > >> >> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [alex.kanavin@gmail.com]
>> >> > >> >> > -=-=-=-=-=-=-=-=-=-=-=-
>> >> > >> >> >
>> >>
>> >>
>> >>
>> >> --
>> >> Alex Kiernan
>>
>>
>>
>> --
>> Alex Kiernan
diff mbox series

Patch

diff --git a/meta/recipes-extended/rust-example/zvariant-crates.inc b/meta/recipes-extended/rust-example/zvariant-crates.inc
new file mode 100644
index 0000000000..297a784661
--- /dev/null
+++ b/meta/recipes-extended/rust-example/zvariant-crates.inc
@@ -0,0 +1,140 @@ 
+SRC_URI += " \
+    crate://crates.io/anes/0.1.6 \
+    crate://crates.io/anyhow/1.0.70 \
+    crate://crates.io/arrayvec/0.7.2 \
+    crate://crates.io/atty/0.2.14 \
+    crate://crates.io/autocfg/1.1.0 \
+    crate://crates.io/bitflags/1.3.2 \
+    crate://crates.io/bumpalo/3.12.0 \
+    crate://crates.io/byteorder/1.4.3 \
+    crate://crates.io/cast/0.3.0 \
+    crate://crates.io/cfg-if/1.0.0 \
+    crate://crates.io/chrono/0.4.24 \
+    crate://crates.io/ciborium-io/0.2.0 \
+    crate://crates.io/ciborium-ll/0.2.0 \
+    crate://crates.io/ciborium/0.2.0 \
+    crate://crates.io/clap/3.2.23 \
+    crate://crates.io/clap_lex/0.2.4 \
+    crate://crates.io/criterion-plot/0.5.0 \
+    crate://crates.io/criterion/0.4.0 \
+    crate://crates.io/crossbeam-channel/0.5.7 \
+    crate://crates.io/crossbeam-deque/0.8.3 \
+    crate://crates.io/crossbeam-epoch/0.9.14 \
+    crate://crates.io/crossbeam-utils/0.8.15 \
+    crate://crates.io/either/1.8.1 \
+    crate://crates.io/enumflags2/0.7.5 \
+    crate://crates.io/enumflags2_derive/0.7.4 \
+    crate://crates.io/form_urlencoded/1.1.0 \
+    crate://crates.io/futures-channel/0.3.27 \
+    crate://crates.io/futures-core/0.3.27 \
+    crate://crates.io/futures-executor/0.3.27 \
+    crate://crates.io/futures-macro/0.3.27 \
+    crate://crates.io/futures-task/0.3.27 \
+    crate://crates.io/futures-util/0.3.27 \
+    crate://crates.io/getrandom/0.2.8 \
+    crate://crates.io/half/1.8.2 \
+    crate://crates.io/hashbrown/0.12.3 \
+    crate://crates.io/heck/0.3.3 \
+    crate://crates.io/hermit-abi/0.1.19 \
+    crate://crates.io/hermit-abi/0.2.6 \
+    crate://crates.io/idna/0.3.0 \
+    crate://crates.io/indexmap/1.9.2 \
+    crate://crates.io/itertools/0.10.5 \
+    crate://crates.io/itertools/0.9.0 \
+    crate://crates.io/itoa/1.0.6 \
+    crate://crates.io/js-sys/0.3.61 \
+    crate://crates.io/lazy_static/1.4.0 \
+    crate://crates.io/libc/0.2.140 \
+    crate://crates.io/log/0.4.17 \
+    crate://crates.io/memchr/2.5.0 \
+    crate://crates.io/memoffset/0.8.0 \
+    crate://crates.io/num-integer/0.1.45 \
+    crate://crates.io/num-traits/0.2.15 \
+    crate://crates.io/num_cpus/1.15.0 \
+    crate://crates.io/once_cell/1.17.1 \
+    crate://crates.io/oorandom/11.1.3 \
+    crate://crates.io/os_str_bytes/6.5.0 \
+    crate://crates.io/percent-encoding/2.2.0 \
+    crate://crates.io/pin-project-lite/0.2.9 \
+    crate://crates.io/pin-utils/0.1.0 \
+    crate://crates.io/pkg-config/0.3.26 \
+    crate://crates.io/plotters-backend/0.3.4 \
+    crate://crates.io/plotters-svg/0.3.3 \
+    crate://crates.io/plotters/0.3.4 \
+    crate://crates.io/ppv-lite86/0.2.17 \
+    crate://crates.io/proc-macro-crate/0.1.5 \
+    crate://crates.io/proc-macro-crate/1.3.1 \
+    crate://crates.io/proc-macro-error-attr/1.0.4 \
+    crate://crates.io/proc-macro-error/1.0.4 \
+    crate://crates.io/proc-macro2/1.0.53 \
+    crate://crates.io/quote/1.0.26 \
+    crate://crates.io/rand/0.8.5 \
+    crate://crates.io/rand_chacha/0.3.1 \
+    crate://crates.io/rand_core/0.6.4 \
+    crate://crates.io/rayon-core/1.11.0 \
+    crate://crates.io/rayon/1.7.0 \
+    crate://crates.io/regex-syntax/0.6.29 \
+    crate://crates.io/regex/1.7.2 \
+    crate://crates.io/ryu/1.0.13 \
+    crate://crates.io/same-file/1.0.6 \
+    crate://crates.io/scopeguard/1.1.0 \
+    crate://crates.io/serde/1.0.158 \
+    crate://crates.io/serde_bytes/0.11.9 \
+    crate://crates.io/serde_derive/1.0.158 \
+    crate://crates.io/serde_json/1.0.94 \
+    crate://crates.io/serde_repr/0.1.12 \
+    crate://crates.io/slab/0.4.8 \
+    crate://crates.io/static_assertions/1.1.0 \
+    crate://crates.io/strum/0.18.0 \
+    crate://crates.io/strum_macros/0.18.0 \
+    crate://crates.io/syn/1.0.109 \
+    crate://crates.io/syn/2.0.8 \
+    crate://crates.io/system-deps/1.3.2 \
+    crate://crates.io/textwrap/0.16.0 \
+    crate://crates.io/thiserror-impl/1.0.40 \
+    crate://crates.io/thiserror/1.0.40 \
+    crate://crates.io/time-core/0.1.0 \
+    crate://crates.io/time-macros/0.2.8 \
+    crate://crates.io/time/0.3.20 \
+    crate://crates.io/tinytemplate/1.2.1 \
+    crate://crates.io/tinyvec/1.6.0 \
+    crate://crates.io/tinyvec_macros/0.1.1 \
+    crate://crates.io/toml/0.5.11 \
+    crate://crates.io/toml_datetime/0.6.1 \
+    crate://crates.io/toml_edit/0.19.8 \
+    crate://crates.io/unicode-bidi/0.3.13 \
+    crate://crates.io/unicode-ident/1.0.8 \
+    crate://crates.io/unicode-normalization/0.1.22 \
+    crate://crates.io/unicode-segmentation/1.10.1 \
+    crate://crates.io/url/2.3.1 \
+    crate://crates.io/uuid/1.3.0 \
+    crate://crates.io/version-compare/0.0.10 \
+    crate://crates.io/version_check/0.9.4 \
+    crate://crates.io/walkdir/2.3.3 \
+    crate://crates.io/wasi/0.11.0+wasi-snapshot-preview1 \
+    crate://crates.io/wasm-bindgen-backend/0.2.84 \
+    crate://crates.io/wasm-bindgen-macro-support/0.2.84 \
+    crate://crates.io/wasm-bindgen-macro/0.2.84 \
+    crate://crates.io/wasm-bindgen-shared/0.2.84 \
+    crate://crates.io/wasm-bindgen/0.2.84 \
+    crate://crates.io/web-sys/0.3.61 \
+    crate://crates.io/winapi-i686-pc-windows-gnu/0.4.0 \
+    crate://crates.io/winapi-util/0.1.5 \
+    crate://crates.io/winapi-x86_64-pc-windows-gnu/0.4.0 \
+    crate://crates.io/winapi/0.3.9 \
+    crate://crates.io/winnow/0.4.0 \
+    crate://crates.io/zvariant_derive/3.12.0 \
+    crate://crates.io/zvariant_utils/1.0.0 \
+    git://github.com/gtk-rs/glib;protocol=https;nobranch=1;name=glib;destsuffix=glib \
+    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=glib-sys;destsuffix=glib-sys;subpath=glib-sys \
+    git://github.com/gtk-rs/sys;protocol=https;nobranch=1;name=gobject-sys;destsuffix=gobject-sys;subpath=gobject-sys \
+"
+
+SRCREV_FORMAT .= "_glib"
+SRCREV_glib = "c9ee583cea07830c099cdcccd33eda9ef705ea93"
+
+SRCREV_FORMAT .= "_glib-sys"
+SRCREV_glib-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
+
+SRCREV_FORMAT .= "_gobject-sys"
+SRCREV_gobject-sys = "5f35e26c65d24f8f018f643218de0f5807ba5f01"
diff --git a/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
new file mode 100644
index 0000000000..638ba3ed4d
--- /dev/null
+++ b/meta/recipes-extended/rust-example/zvariant/0001-Tweak-zvariant-cargo-config.patch
@@ -0,0 +1,1249 @@ 
+From e85ce4136694899f0010d48f47c5e905c3a9d461 Mon Sep 17 00:00:00 2001
+From: Frederic Martinsons <frederic.martinsons@gmail.com>
+Date: Thu, 23 Mar 2023 07:12:37 +0100
+Subject: [PATCH] Tweak zvariant cargo config
+
+This library crate is a part of zbus project, and is aimed to
+be published amongst the whole project.
+
+Nevertheless, this recipe is for showing example of real
+code which uses a local registry via git url inside yocto
+environment.
+
+I didn't find a real example of binary crate that uses git
+dependency but it seems to me a very common use case
+when we are working on multiple local crates that are not
+aimed to be published on public registry.
+
+Long story short, this patch add a modified Cargo.toml
+to use the zvariant_derive dependency from crates.io instead
+of zbus local one and a pre generated Cargo.lock in order
+to make cargo patch process inside cargo_common.bbclass work
+
+Upstream-Status: Inappropriate
+Signed-off-by: Frederic Martinsons <frederic.martinsons@gmail.com>
+---
+ zvariant/Cargo.lock | 1198 +++++++++++++++++++++++++++++++++++++++++++
+ zvariant/Cargo.toml |    2 +-
+ 2 files changed, 1199 insertions(+), 1 deletion(-)
+ create mode 100644 zvariant/Cargo.lock
+
+diff --git a/zvariant/Cargo.lock b/zvariant/Cargo.lock
+new file mode 100644
+index 00000000..02a83d42
+--- /dev/null
++++ b/zvariant/Cargo.lock
+@@ -0,0 +1,1198 @@
++# This file is automatically @generated by Cargo.
++# It is not intended for manual editing.
++version = 3
++
++[[package]]
++name = "anes"
++version = "0.1.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299"
++
++[[package]]
++name = "anyhow"
++version = "1.0.70"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7de8ce5e0f9f8d88245311066a578d72b7af3e7088f32783804676302df237e4"
++
++[[package]]
++name = "arrayvec"
++version = "0.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "atty"
++version = "0.2.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8"
++dependencies = [
++ "hermit-abi 0.1.19",
++ "libc",
++ "winapi",
++]
++
++[[package]]
++name = "autocfg"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa"
++
++[[package]]
++name = "bitflags"
++version = "1.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a"
++
++[[package]]
++name = "bumpalo"
++version = "3.12.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535"
++
++[[package]]
++name = "byteorder"
++version = "1.4.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610"
++
++[[package]]
++name = "cast"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5"
++
++[[package]]
++name = "cfg-if"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
++
++[[package]]
++name = "chrono"
++version = "0.4.24"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4e3c5919066adf22df73762e50cffcde3a758f2a848b113b586d1f86728b673b"
++dependencies = [
++ "num-integer",
++ "num-traits",
++ "serde",
++]
++
++[[package]]
++name = "ciborium"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b0c137568cc60b904a7724001b35ce2630fd00d5d84805fbb608ab89509d788f"
++dependencies = [
++ "ciborium-io",
++ "ciborium-ll",
++ "serde",
++]
++
++[[package]]
++name = "ciborium-io"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "346de753af073cc87b52b2083a506b38ac176a44cfb05497b622e27be899b369"
++
++[[package]]
++name = "ciborium-ll"
++version = "0.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "213030a2b5a4e0c0892b6652260cf6ccac84827b83a85a534e178e3906c4cf1b"
++dependencies = [
++ "ciborium-io",
++ "half",
++]
++
++[[package]]
++name = "clap"
++version = "3.2.23"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "71655c45cb9845d3270c9d6df84ebe72b4dad3c2ba3f7023ad47c144e4e473a5"
++dependencies = [
++ "bitflags",
++ "clap_lex",
++ "indexmap",
++ "textwrap",
++]
++
++[[package]]
++name = "clap_lex"
++version = "0.2.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
++dependencies = [
++ "os_str_bytes",
++]
++
++[[package]]
++name = "criterion"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e7c76e09c1aae2bc52b3d2f29e13c6572553b30c4aa1b8a49fd70de6412654cb"
++dependencies = [
++ "anes",
++ "atty",
++ "cast",
++ "ciborium",
++ "clap",
++ "criterion-plot",
++ "itertools 0.10.5",
++ "lazy_static",
++ "num-traits",
++ "oorandom",
++ "plotters",
++ "rayon",
++ "regex",
++ "serde",
++ "serde_derive",
++ "serde_json",
++ "tinytemplate",
++ "walkdir",
++]
++
++[[package]]
++name = "criterion-plot"
++version = "0.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1"
++dependencies = [
++ "cast",
++ "itertools 0.10.5",
++]
++
++[[package]]
++name = "crossbeam-channel"
++version = "0.5.7"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cf2b3e8478797446514c91ef04bafcb59faba183e621ad488df88983cc14128c"
++dependencies = [
++ "cfg-if",
++ "crossbeam-utils",
++]
++
++[[package]]
++name = "crossbeam-deque"
++version = "0.8.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef"
++dependencies = [
++ "cfg-if",
++ "crossbeam-epoch",
++ "crossbeam-utils",
++]
++
++[[package]]
++name = "crossbeam-epoch"
++version = "0.9.14"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "46bd5f3f85273295a9d14aedfb86f6aadbff6d8f5295c4a9edb08e819dcf5695"
++dependencies = [
++ "autocfg",
++ "cfg-if",
++ "crossbeam-utils",
++ "memoffset",
++ "scopeguard",
++]
++
++[[package]]
++name = "crossbeam-utils"
++version = "0.8.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3c063cd8cc95f5c377ed0d4b49a4b21f632396ff690e8470c29b3359b346984b"
++dependencies = [
++ "cfg-if",
++]
++
++[[package]]
++name = "either"
++version = "1.8.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7fcaabb2fef8c910e7f4c7ce9f67a1283a1715879a7c230ca9d6d1ae31f16d91"
++
++[[package]]
++name = "enumflags2"
++version = "0.7.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e75d4cd21b95383444831539909fbb14b9dc3fdceb2a6f5d36577329a1f55ccb"
++dependencies = [
++ "enumflags2_derive",
++ "serde",
++]
++
++[[package]]
++name = "enumflags2_derive"
++version = "0.7.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f58dc3c5e468259f19f2d46304a6b28f1c3d034442e14b322d2b850e36f6d5ae"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
++
++[[package]]
++name = "form_urlencoded"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8"
++dependencies = [
++ "percent-encoding",
++]
++
++[[package]]
++name = "futures-channel"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "164713a5a0dcc3e7b4b1ed7d3b433cabc18025386f9339346e8daf15963cf7ac"
++dependencies = [
++ "futures-core",
++]
++
++[[package]]
++name = "futures-core"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "86d7a0c1aa76363dac491de0ee99faf6941128376f1cf96f07db7603b7de69dd"
++
++[[package]]
++name = "futures-executor"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1997dd9df74cdac935c76252744c1ed5794fac083242ea4fe77ef3ed60ba0f83"
++dependencies = [
++ "futures-core",
++ "futures-task",
++ "futures-util",
++]
++
++[[package]]
++name = "futures-macro"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3eb14ed937631bd8b8b8977f2c198443447a8355b6e3ca599f38c975e5a963b6"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
++
++[[package]]
++name = "futures-task"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fd65540d33b37b16542a0438c12e6aeead10d4ac5d05bd3f805b8f35ab592879"
++
++[[package]]
++name = "futures-util"
++version = "0.3.27"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3ef6b17e481503ec85211fed8f39d1970f128935ca1f814cd32ac4a6842e84ab"
++dependencies = [
++ "futures-core",
++ "futures-macro",
++ "futures-task",
++ "pin-project-lite",
++ "pin-utils",
++ "slab",
++]
++
++[[package]]
++name = "getrandom"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31"
++dependencies = [
++ "cfg-if",
++ "libc",
++ "wasi",
++]
++
++[[package]]
++name = "glib"
++version = "0.10.0"
++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
++dependencies = [
++ "bitflags",
++ "futures-channel",
++ "futures-core",
++ "futures-executor",
++ "futures-task",
++ "futures-util",
++ "glib-macros",
++ "glib-sys",
++ "gobject-sys",
++ "libc",
++ "once_cell",
++]
++
++[[package]]
++name = "glib-macros"
++version = "0.10.0"
++source = "git+https://github.com/gtk-rs/glib?rev=c9ee583cea0#c9ee583cea07830c099cdcccd33eda9ef705ea93"
++dependencies = [
++ "anyhow",
++ "heck",
++ "itertools 0.9.0",
++ "proc-macro-crate 0.1.5",
++ "proc-macro-error",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
++
++[[package]]
++name = "glib-sys"
++version = "0.10.0"
++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
++dependencies = [
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "gobject-sys"
++version = "0.10.0"
++source = "git+https://github.com/gtk-rs/sys#5f35e26c65d24f8f018f643218de0f5807ba5f01"
++dependencies = [
++ "glib-sys",
++ "libc",
++ "system-deps",
++]
++
++[[package]]
++name = "half"
++version = "1.8.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7"
++
++[[package]]
++name = "hashbrown"
++version = "0.12.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
++
++[[package]]
++name = "heck"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c"
++dependencies = [
++ "unicode-segmentation",
++]
++
++[[package]]
++name = "hermit-abi"
++version = "0.1.19"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "hermit-abi"
++version = "0.2.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7"
++dependencies = [
++ "libc",
++]
++
++[[package]]
++name = "idna"
++version = "0.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6"
++dependencies = [
++ "unicode-bidi",
++ "unicode-normalization",
++]
++
++[[package]]
++name = "indexmap"
++version = "1.9.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399"
++dependencies = [
++ "autocfg",
++ "hashbrown",
++]
++
++[[package]]
++name = "itertools"
++version = "0.9.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b"
++dependencies = [
++ "either",
++]
++
++[[package]]
++name = "itertools"
++version = "0.10.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473"
++dependencies = [
++ "either",
++]
++
++[[package]]
++name = "itoa"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "453ad9f582a441959e5f0d088b02ce04cfe8d51a8eaf077f12ac6d3e94164ca6"
++
++[[package]]
++name = "js-sys"
++version = "0.3.61"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "445dde2150c55e483f3d8416706b97ec8e8237c307e5b7b4b8dd15e6af2a0730"
++dependencies = [
++ "wasm-bindgen",
++]
++
++[[package]]
++name = "lazy_static"
++version = "1.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
++
++[[package]]
++name = "libc"
++version = "0.2.140"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "99227334921fae1a979cf0bfdfcc6b3e5ce376ef57e16fb6fb3ea2ed6095f80c"
++
++[[package]]
++name = "log"
++version = "0.4.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e"
++dependencies = [
++ "cfg-if",
++]
++
++[[package]]
++name = "memchr"
++version = "2.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d"
++
++[[package]]
++name = "memoffset"
++version = "0.8.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1"
++dependencies = [
++ "autocfg",
++]
++
++[[package]]
++name = "num-integer"
++version = "0.1.45"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9"
++dependencies = [
++ "autocfg",
++ "num-traits",
++]
++
++[[package]]
++name = "num-traits"
++version = "0.2.15"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd"
++dependencies = [
++ "autocfg",
++]
++
++[[package]]
++name = "num_cpus"
++version = "1.15.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b"
++dependencies = [
++ "hermit-abi 0.2.6",
++ "libc",
++]
++
++[[package]]
++name = "once_cell"
++version = "1.17.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "b7e5500299e16ebb147ae15a00a942af264cf3688f47923b8fc2cd5858f23ad3"
++
++[[package]]
++name = "oorandom"
++version = "11.1.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575"
++
++[[package]]
++name = "os_str_bytes"
++version = "6.5.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ceedf44fb00f2d1984b0bc98102627ce622e083e49a5bacdb3e514fa4238e267"
++
++[[package]]
++name = "percent-encoding"
++version = "2.2.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e"
++
++[[package]]
++name = "pin-project-lite"
++version = "0.2.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116"
++
++[[package]]
++name = "pin-utils"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184"
++
++[[package]]
++name = "pkg-config"
++version = "0.3.26"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160"
++
++[[package]]
++name = "plotters"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2538b639e642295546c50fcd545198c9d64ee2a38620a628724a3b266d5fbf97"
++dependencies = [
++ "num-traits",
++ "plotters-backend",
++ "plotters-svg",
++ "wasm-bindgen",
++ "web-sys",
++]
++
++[[package]]
++name = "plotters-backend"
++version = "0.3.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "193228616381fecdc1224c62e96946dfbc73ff4384fba576e052ff8c1bea8142"
++
++[[package]]
++name = "plotters-svg"
++version = "0.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f9a81d2759aae1dae668f783c308bc5c8ebd191ff4184aaa1b37f65a6ae5a56f"
++dependencies = [
++ "plotters-backend",
++]
++
++[[package]]
++name = "ppv-lite86"
++version = "0.2.17"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de"
++
++[[package]]
++name = "proc-macro-crate"
++version = "0.1.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785"
++dependencies = [
++ "toml",
++]
++
++[[package]]
++name = "proc-macro-crate"
++version = "1.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
++dependencies = [
++ "once_cell",
++ "toml_edit",
++]
++
++[[package]]
++name = "proc-macro-error"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c"
++dependencies = [
++ "proc-macro-error-attr",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++ "version_check",
++]
++
++[[package]]
++name = "proc-macro-error-attr"
++version = "1.0.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "version_check",
++]
++
++[[package]]
++name = "proc-macro2"
++version = "1.0.53"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ba466839c78239c09faf015484e5cc04860f88242cff4d03eb038f04b4699b73"
++dependencies = [
++ "unicode-ident",
++]
++
++[[package]]
++name = "quote"
++version = "1.0.26"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc"
++dependencies = [
++ "proc-macro2",
++]
++
++[[package]]
++name = "rand"
++version = "0.8.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404"
++dependencies = [
++ "libc",
++ "rand_chacha",
++ "rand_core",
++]
++
++[[package]]
++name = "rand_chacha"
++version = "0.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88"
++dependencies = [
++ "ppv-lite86",
++ "rand_core",
++]
++
++[[package]]
++name = "rand_core"
++version = "0.6.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
++dependencies = [
++ "getrandom",
++]
++
++[[package]]
++name = "rayon"
++version = "1.7.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1d2df5196e37bcc87abebc0053e20787d73847bb33134a69841207dd0a47f03b"
++dependencies = [
++ "either",
++ "rayon-core",
++]
++
++[[package]]
++name = "rayon-core"
++version = "1.11.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4b8f95bd6966f5c87776639160a66bd8ab9895d9d4ab01ddba9fc60661aebe8d"
++dependencies = [
++ "crossbeam-channel",
++ "crossbeam-deque",
++ "crossbeam-utils",
++ "num_cpus",
++]
++
++[[package]]
++name = "regex"
++version = "1.7.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cce168fea28d3e05f158bda4576cf0c844d5045bc2cc3620fa0292ed5bb5814c"
++dependencies = [
++ "regex-syntax",
++]
++
++[[package]]
++name = "regex-syntax"
++version = "0.6.29"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1"
++
++[[package]]
++name = "ryu"
++version = "1.0.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f91339c0467de62360649f8d3e185ca8de4224ff281f66000de5eb2a77a79041"
++
++[[package]]
++name = "same-file"
++version = "1.0.6"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502"
++dependencies = [
++ "winapi-util",
++]
++
++[[package]]
++name = "scopeguard"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
++
++[[package]]
++name = "serde"
++version = "1.0.158"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "771d4d9c4163ee138805e12c710dd365e4f44be8be0503cb1bb9eb989425d9c9"
++dependencies = [
++ "serde_derive",
++]
++
++[[package]]
++name = "serde_bytes"
++version = "0.11.9"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "416bda436f9aab92e02c8e10d49a15ddd339cea90b6e340fe51ed97abb548294"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "serde_derive"
++version = "1.0.158"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 2.0.8",
++]
++
++[[package]]
++name = "serde_json"
++version = "1.0.94"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1c533a59c9d8a93a09c6ab31f0fd5e5f4dd1b8fc9434804029839884765d04ea"
++dependencies = [
++ "itoa",
++ "ryu",
++ "serde",
++]
++
++[[package]]
++name = "serde_repr"
++version = "0.1.12"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bcec881020c684085e55a25f7fd888954d56609ef363479dc5a1305eb0d40cab"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 2.0.8",
++]
++
++[[package]]
++name = "slab"
++version = "0.4.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "6528351c9bc8ab22353f9d776db39a20288e8d6c37ef8cfe3317cf875eecfc2d"
++dependencies = [
++ "autocfg",
++]
++
++[[package]]
++name = "static_assertions"
++version = "1.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
++
++[[package]]
++name = "strum"
++version = "0.18.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "57bd81eb48f4c437cadc685403cad539345bf703d78e63707418431cecd4522b"
++
++[[package]]
++name = "strum_macros"
++version = "0.18.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "87c85aa3f8ea653bfd3ddf25f7ee357ee4d204731f6aa9ad04002306f6e2774c"
++dependencies = [
++ "heck",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
++
++[[package]]
++name = "syn"
++version = "1.0.109"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "unicode-ident",
++]
++
++[[package]]
++name = "syn"
++version = "2.0.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "bcc02725fd69ab9f26eab07fad303e2497fad6fb9eba4f96c4d1687bdf704ad9"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "unicode-ident",
++]
++
++[[package]]
++name = "system-deps"
++version = "1.3.2"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0f3ecc17269a19353b3558b313bba738b25d82993e30d62a18406a24aba4649b"
++dependencies = [
++ "heck",
++ "pkg-config",
++ "strum",
++ "strum_macros",
++ "thiserror",
++ "toml",
++ "version-compare",
++]
++
++[[package]]
++name = "textwrap"
++version = "0.16.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d"
++
++[[package]]
++name = "thiserror"
++version = "1.0.40"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "978c9a314bd8dc99be594bc3c175faaa9794be04a5a5e153caba6915336cebac"
++dependencies = [
++ "thiserror-impl",
++]
++
++[[package]]
++name = "thiserror-impl"
++version = "1.0.40"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f9456a42c5b0d803c8cd86e73dd7cc9edd429499f37a3550d286d5e86720569f"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 2.0.8",
++]
++
++[[package]]
++name = "time"
++version = "0.3.20"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "cd0cbfecb4d19b5ea75bb31ad904eb5b9fa13f21079c3b92017ebdf4999a5890"
++dependencies = [
++ "serde",
++ "time-core",
++ "time-macros",
++]
++
++[[package]]
++name = "time-core"
++version = "0.1.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2e153e1f1acaef8acc537e68b44906d2db6436e2b35ac2c6b42640fff91f00fd"
++
++[[package]]
++name = "time-macros"
++version = "0.2.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "fd80a657e71da814b8e5d60d3374fc6d35045062245d80224748ae522dd76f36"
++dependencies = [
++ "time-core",
++]
++
++[[package]]
++name = "tinytemplate"
++version = "1.2.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc"
++dependencies = [
++ "serde",
++ "serde_json",
++]
++
++[[package]]
++name = "tinyvec"
++version = "1.6.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50"
++dependencies = [
++ "tinyvec_macros",
++]
++
++[[package]]
++name = "tinyvec_macros"
++version = "0.1.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20"
++
++[[package]]
++name = "toml"
++version = "0.5.11"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "toml_datetime"
++version = "0.6.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "3ab8ed2edee10b50132aed5f331333428b011c99402b5a534154ed15746f9622"
++
++[[package]]
++name = "toml_edit"
++version = "0.19.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "239410c8609e8125456927e6707163a3b1fdb40561e4b803bc041f466ccfdc13"
++dependencies = [
++ "indexmap",
++ "toml_datetime",
++ "winnow",
++]
++
++[[package]]
++name = "unicode-bidi"
++version = "0.3.13"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460"
++
++[[package]]
++name = "unicode-ident"
++version = "1.0.8"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e5464a87b239f13a63a501f2701565754bae92d243d4bb7eb12f6d57d2269bf4"
++
++[[package]]
++name = "unicode-normalization"
++version = "0.1.22"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921"
++dependencies = [
++ "tinyvec",
++]
++
++[[package]]
++name = "unicode-segmentation"
++version = "1.10.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36"
++
++[[package]]
++name = "url"
++version = "2.3.1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643"
++dependencies = [
++ "form_urlencoded",
++ "idna",
++ "percent-encoding",
++ "serde",
++]
++
++[[package]]
++name = "uuid"
++version = "1.3.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "1674845326ee10d37ca60470760d4288a6f80f304007d92e5c53bab78c9cfd79"
++dependencies = [
++ "serde",
++]
++
++[[package]]
++name = "version-compare"
++version = "0.0.10"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "d63556a25bae6ea31b52e640d7c41d1ab27faba4ccb600013837a3d0b3994ca1"
++
++[[package]]
++name = "version_check"
++version = "0.9.4"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
++
++[[package]]
++name = "walkdir"
++version = "2.3.3"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "36df944cda56c7d8d8b7496af378e6b16de9284591917d307c9b4d313c44e698"
++dependencies = [
++ "same-file",
++ "winapi-util",
++]
++
++[[package]]
++name = "wasi"
++version = "0.11.0+wasi-snapshot-preview1"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423"
++
++[[package]]
++name = "wasm-bindgen"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "31f8dcbc21f30d9b8f2ea926ecb58f6b91192c17e9d33594b3df58b2007ca53b"
++dependencies = [
++ "cfg-if",
++ "wasm-bindgen-macro",
++]
++
++[[package]]
++name = "wasm-bindgen-backend"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "95ce90fd5bcc06af55a641a86428ee4229e44e07033963a2290a8e241607ccb9"
++dependencies = [
++ "bumpalo",
++ "log",
++ "once_cell",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++ "wasm-bindgen-shared",
++]
++
++[[package]]
++name = "wasm-bindgen-macro"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "4c21f77c0bedc37fd5dc21f897894a5ca01e7bb159884559461862ae90c0b4c5"
++dependencies = [
++ "quote",
++ "wasm-bindgen-macro-support",
++]
++
++[[package]]
++name = "wasm-bindgen-macro-support"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "2aff81306fcac3c7515ad4e177f521b5c9a15f2b08f4e32d823066102f35a5f6"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++ "wasm-bindgen-backend",
++ "wasm-bindgen-shared",
++]
++
++[[package]]
++name = "wasm-bindgen-shared"
++version = "0.2.84"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "0046fef7e28c3804e5e38bfa31ea2a0f73905319b677e57ebe37e49358989b5d"
++
++[[package]]
++name = "web-sys"
++version = "0.3.61"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "e33b99f4b23ba3eec1a53ac264e35a755f00e966e0065077d6027c0f575b0b97"
++dependencies = [
++ "js-sys",
++ "wasm-bindgen",
++]
++
++[[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.5"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178"
++dependencies = [
++ "winapi",
++]
++
++[[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 = "winnow"
++version = "0.4.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "deac0939bd6e4f24ab5919fbf751c97a8cfc8543bb083a305ed5c0c10bb241d1"
++dependencies = [
++ "memchr",
++]
++
++[[package]]
++name = "zvariant"
++version = "3.12.0"
++dependencies = [
++ "arrayvec",
++ "byteorder",
++ "chrono",
++ "criterion",
++ "enumflags2",
++ "glib",
++ "libc",
++ "rand",
++ "serde",
++ "serde_bytes",
++ "serde_json",
++ "serde_repr",
++ "static_assertions",
++ "time",
++ "url",
++ "uuid",
++ "zvariant_derive",
++]
++
++[[package]]
++name = "zvariant_derive"
++version = "3.12.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "34c20260af4b28b3275d6676c7e2a6be0d4332e8e0aba4616d34007fd84e462a"
++dependencies = [
++ "proc-macro-crate 1.3.1",
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++ "zvariant_utils",
++]
++
++[[package]]
++name = "zvariant_utils"
++version = "1.0.0"
++source = "registry+https://github.com/rust-lang/crates.io-index"
++checksum = "53b22993dbc4d128a17a3b6c92f1c63872dd67198537ee728d8b5d7c40640a8b"
++dependencies = [
++ "proc-macro2",
++ "quote",
++ "syn 1.0.109",
++]
+diff --git a/zvariant/Cargo.toml b/zvariant/Cargo.toml
+index 45367729..6981862a 100644
+--- a/zvariant/Cargo.toml
++++ b/zvariant/Cargo.toml
+@@ -27,7 +27,7 @@ byteorder = "1.4.3"
+ serde = { version = "1.0", features = ["derive"] }
+ arrayvec = { version = "0.7.2", features = ["serde"], optional = true }
+ enumflags2 = { version = "0.7.5", features = ["serde"], optional = true }
+-zvariant_derive = { version = "=3.12.0", path = "../zvariant_derive" }
++zvariant_derive = "3.12.0"
+ serde_bytes = { version = "0.11", optional = true }
+ static_assertions = "1.1.0"
+ libc = "0.2.137"
+2.34.1
+
diff --git a/meta/recipes-extended/rust-example/zvariant_3.12.0.bb b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
new file mode 100644
index 0000000000..ab769b3fce
--- /dev/null
+++ b/meta/recipes-extended/rust-example/zvariant_3.12.0.bb
@@ -0,0 +1,20 @@ 
+SUMMARY = "Provides API for encoding/decoding of data to/from D-Bus wire format"
+DESCRIPTION = "This crate provides API for encoding/decoding of data to/from D-Bus wire format.\
+This binary wire format is simple and very efficient and hence useful outside of D-Bus context as well.\
+A modified form of this format, GVariant is very commonly used for efficient storage of arbitrary \
+data and is also supported by this crate."
+HOMEPAGE = "https://gitlab.freedesktop.org/dbus/zbus/"
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://LICENSE;md5=b377b220f43d747efdec40d69fcaa69d"
+
+SRC_URI = " \
+    git://gitlab.freedesktop.org/dbus/zbus;protocol=https;branch=main;subpath=zvariant \
+    file://0001-Tweak-zvariant-cargo-config.patch;striplevel=2 \
+"
+
+SRCREV = "07506776fab5f58e029760bb4b288f670c7eecd6"
+S = "${WORKDIR}/zvariant"
+
+inherit cargo cargo-update-recipe-crates
+
+require ${BPN}-crates.inc