diff --git a/csharp/Examples.Doublets.CRUD.DotNet.csproj b/csharp/Examples.Doublets.CRUD.DotNet.csproj
index 57223ae..0017a96 100644
--- a/csharp/Examples.Doublets.CRUD.DotNet.csproj
+++ b/csharp/Examples.Doublets.CRUD.DotNet.csproj
@@ -2,7 +2,7 @@
Exe
- net6
+ net8.0
enable
diff --git a/csharp/README.md b/csharp/README.md
index 1995eb2..c05c980 100644
--- a/csharp/README.md
+++ b/csharp/README.md
@@ -6,7 +6,7 @@ A quick start example that shows how to create, read, update and delete the firs
## Prerequisites
* Linux, macOS or Windows
-* [.NET 5+ or .NET Core 2.2+](https://dotnet.microsoft.com/download)
+* [.NET 8.0+](https://dotnet.microsoft.com/download)
* [Platform.Data.Doublets](https://www.nuget.org/packages/Platform.Data.Doublets) NuGet package with 0.6.0 or above
## [The code](https://github.com/linksplatform/Examples.Doublets.CRUD.DotNet/blob/master/csharp/Program.cs) | [Run .NET fiddle](https://dotnetfiddle.net/ERHBKA)
diff --git a/csharp/README.ru.md b/csharp/README.ru.md
index d3b8917..219fb36 100644
--- a/csharp/README.ru.md
+++ b/csharp/README.ru.md
@@ -6,7 +6,7 @@
## Для запуска требуется
* Linux, macOS или Windows
-* [.NET 5+ или .NET Core 2.2+](https://dotnet.microsoft.com/download)
+* [.NET 8.0+](https://dotnet.microsoft.com/download)
* NuGet пакет [Platform.Data.Doublets](https://www.nuget.org/packages/Platform.Data.Doublets) с версией 0.6.0 или выше
## [Код](https://github.com/linksplatform/Examples.Doublets.CRUD.DotNet/blob/master/csharp/Program.cs) | [Запустить .NET fiddle](https://dotnetfiddle.net/Y7Zvt0)
diff --git a/csharp/db.links b/csharp/db.links
new file mode 100644
index 0000000..3e4f79e
Binary files /dev/null and b/csharp/db.links differ
diff --git a/rust/Cargo.lock b/rust/Cargo.lock
new file mode 100644
index 0000000..225a3b2
--- /dev/null
+++ b/rust/Cargo.lock
@@ -0,0 +1,370 @@
+# This file is automatically @generated by Cargo.
+# It is not intended for manual editing.
+version = 4
+
+[[package]]
+name = "autocfg"
+version = "1.5.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8"
+
+[[package]]
+name = "bitflags"
+version = "2.9.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2261d10cca569e4643e526d8dc2e62e433cc8aba21ab764233731f8d369bf394"
+
+[[package]]
+name = "cfg-if"
+version = "1.0.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "2fd1289c04a9ea8cb22300a459a72a385d7c73d3259e2ed7dcb2af674838cfa9"
+
+[[package]]
+name = "crud"
+version = "0.0.0"
+dependencies = [
+ "doublets",
+]
+
+[[package]]
+name = "doublets"
+version = "0.1.0-pre+beta.15"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "af83667f480bc4298cc1042bb01fba5c8ee536c3661378ed87f22b6e15a354f8"
+dependencies = [
+ "cfg-if",
+ "leak_slice",
+ "num-traits",
+ "platform-data",
+ "platform-mem",
+ "platform-num",
+ "platform-treesmethods",
+ "rand",
+ "static_assertions",
+ "thiserror",
+]
+
+[[package]]
+name = "errno"
+version = "0.3.14"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb"
+dependencies = [
+ "libc",
+ "windows-sys",
+]
+
+[[package]]
+name = "fastrand"
+version = "2.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be"
+
+[[package]]
+name = "funty"
+version = "2.0.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c"
+
+[[package]]
+name = "getrandom"
+version = "0.2.16"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "wasi 0.11.1+wasi-snapshot-preview1",
+]
+
+[[package]]
+name = "getrandom"
+version = "0.3.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4"
+dependencies = [
+ "cfg-if",
+ "libc",
+ "r-efi",
+ "wasi 0.14.5+wasi-0.2.4",
+]
+
+[[package]]
+name = "leak_slice"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ecf3387da9fb41906394e1306ddd3cd26dd9b7177af11c19b45b364b743aed26"
+
+[[package]]
+name = "libc"
+version = "0.2.175"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "6a82ae493e598baaea5209805c49bbf2ea7de956d50d7da0da1164f9c6d28543"
+
+[[package]]
+name = "linux-raw-sys"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039"
+
+[[package]]
+name = "memmap2"
+version = "0.5.10"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327"
+dependencies = [
+ "libc",
+]
+
+[[package]]
+name = "num-traits"
+version = "0.2.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841"
+dependencies = [
+ "autocfg",
+]
+
+[[package]]
+name = "once_cell"
+version = "1.21.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d"
+
+[[package]]
+name = "platform-data"
+version = "0.1.0-beta.3"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "52f5d76463c423fec891504d83980477555bb62bc19bb90808d9be27b1cb1c76"
+dependencies = [
+ "funty",
+ "thiserror",
+]
+
+[[package]]
+name = "platform-mem"
+version = "0.1.0-pre+beta.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e74b28413b5e7213bfde416a0a7dd11753cac3e86f20cb800ed04e59b3034f8f"
+dependencies = [
+ "memmap2",
+ "platform-num",
+ "tempfile",
+]
+
+[[package]]
+name = "platform-num"
+version = "0.1.0-aplha.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "64f3d8a90b4188611f2923aec60f0d6a6b49663e5e883fcd5d422f0f24ffb7bd"
+dependencies = [
+ "num-traits",
+]
+
+[[package]]
+name = "platform-treesmethods"
+version = "0.1.0-aplha.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "535bbd5ac2c997fa89fefa569de962e13a610ece31215db179bc2f45636cee9a"
+dependencies = [
+ "num-traits",
+ "platform-num",
+]
+
+[[package]]
+name = "ppv-lite86"
+version = "0.2.21"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9"
+dependencies = [
+ "zerocopy",
+]
+
+[[package]]
+name = "proc-macro2"
+version = "1.0.101"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "89ae43fd86e4158d6db51ad8e2b80f313af9cc74f5c0e03ccb87de09998732de"
+dependencies = [
+ "unicode-ident",
+]
+
+[[package]]
+name = "quote"
+version = "1.0.40"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d"
+dependencies = [
+ "proc-macro2",
+]
+
+[[package]]
+name = "r-efi"
+version = "5.3.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f"
+
+[[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 0.2.16",
+]
+
+[[package]]
+name = "rustix"
+version = "1.1.2"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e"
+dependencies = [
+ "bitflags",
+ "errno",
+ "libc",
+ "linux-raw-sys",
+ "windows-sys",
+]
+
+[[package]]
+name = "static_assertions"
+version = "1.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f"
+
+[[package]]
+name = "syn"
+version = "2.0.106"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ede7c438028d4436d71104916910f5bb611972c5cfd7f89b8300a8186e6fada6"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "unicode-ident",
+]
+
+[[package]]
+name = "tempfile"
+version = "3.22.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "84fa4d11fadde498443cca10fd3ac23c951f0dc59e080e9f4b93d4df4e4eea53"
+dependencies = [
+ "fastrand",
+ "getrandom 0.3.3",
+ "once_cell",
+ "rustix",
+ "windows-sys",
+]
+
+[[package]]
+name = "thiserror"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52"
+dependencies = [
+ "thiserror-impl",
+]
+
+[[package]]
+name = "thiserror-impl"
+version = "1.0.69"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
+
+[[package]]
+name = "unicode-ident"
+version = "1.0.19"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "f63a545481291138910575129486daeaf8ac54aee4387fe7906919f7830c7d9d"
+
+[[package]]
+name = "wasi"
+version = "0.11.1+wasi-snapshot-preview1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b"
+
+[[package]]
+name = "wasi"
+version = "0.14.5+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "a4494f6290a82f5fe584817a676a34b9d6763e8d9d18204009fb31dceca98fd4"
+dependencies = [
+ "wasip2",
+]
+
+[[package]]
+name = "wasip2"
+version = "1.0.0+wasi-0.2.4"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "03fa2761397e5bd52002cd7e73110c71af2109aca4e521a9f40473fe685b0a24"
+dependencies = [
+ "wit-bindgen",
+]
+
+[[package]]
+name = "windows-link"
+version = "0.2.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "45e46c0661abb7180e7b9c281db115305d49ca1709ab8242adf09666d2173c65"
+
+[[package]]
+name = "windows-sys"
+version = "0.61.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "e201184e40b2ede64bc2ea34968b28e33622acdbbf37104f0e4a33f7abe657aa"
+dependencies = [
+ "windows-link",
+]
+
+[[package]]
+name = "wit-bindgen"
+version = "0.45.1"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "5c573471f125075647d03df72e026074b7203790d41351cd6edc96f46bcccd36"
+
+[[package]]
+name = "zerocopy"
+version = "0.8.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c"
+dependencies = [
+ "zerocopy-derive",
+]
+
+[[package]]
+name = "zerocopy-derive"
+version = "0.8.27"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831"
+dependencies = [
+ "proc-macro2",
+ "quote",
+ "syn",
+]
diff --git a/rust/README.md b/rust/README.md
new file mode 100644
index 0000000..e7df211
--- /dev/null
+++ b/rust/README.md
@@ -0,0 +1,64 @@
+[](https://github.com/linksplatform/Examples.Doublets.CRUD/actions?workflow=CI)
+
+# Examples.Doublets.CRUD.Rust ([русская версия](https://github.com/linksplatform/Examples.Doublets.CRUD/blob/main/rust/README.ru.md))
+
+A quick start example that shows how to create, read, update and delete the first [link](https://github.com/Konard/LinksPlatform/wiki/FAQ#what-does-the-link-mean) using [Doublets](https://github.com/linksplatform/Data.Doublets) in Rust.
+
+## Prerequisites
+* Linux, macOS or Windows
+* [Rust](https://rustup.rs/)
+* [doublets](https://crates.io/crates/doublets) crate
+
+## [The code](https://github.com/linksplatform/Examples.Doublets.CRUD/blob/main/rust/src/main.rs)
+
+```rust
+use doublets::{data, mem, unit, Doublets, DoubletsExt, Links};
+
+fn main() -> Result<(), doublets::Error> {
+ // A doublet links store is mapped to the "db.links" file:
+ let mem = mem::FileMapped::from_path("db.links")?;
+ let mut store = unit::Store::::new(mem)?;
+
+ // Creating a doublet link:
+ let link = store.create_link(1, 1)?;
+
+ // Read operations:
+ println!("The number of links in the data store is {}.", store.count_links([store.constants().any, store.constants().any, store.constants().any]));
+ println!("Data store contents:");
+
+ // Means any link address or that there is no restriction on link address
+ let any = store.constants().any;
+ // The arguments of a query are restrictions: on address, on source, on target
+ store.each_iter([any, any, any]).for_each(|link| {
+ println!("{link:?}");
+ });
+
+ // Cleaning (resetting) the contents of the link:
+ let updated_link = store.update_link(link, 0, 0)?;
+
+ // Removing the link
+ store
+ .delete_with(updated_link, |before, after| {
+ data::Flow::Continue
+ })
+ .map(|_| ())
+}
+```
+
+The expected output is:
+
+```
+The number of links in the data store is 1.
+Data store contents:
+[1, 1, 1]
+```
+
+Look at [doublets documentation](https://docs.rs/doublets) for more details.
+
+## Looking for something more interesting?
+* [Comparison between SQLite and Doublets](https://github.com/linksplatform/Comparisons.SQLiteVSDoublets)
+* [Search engine with its web crawler, that stores web-pages in the Doublets](https://github.com/linksplatform/Crawler)
+* [GraphQL server that uses Doublets as the database behind the universal API](https://github.com/linksplatform/Data.Doublets.GraphQL)
+* [GitHub bot that uses Doublets as the dababase for file templates](https://github.com/linksplatform/Bot)
+* [JSON to Doublets importer and Doublets to JSON exporter](https://github.com/linksplatform/Data.Doublets.Json)
+* [XML to Doublets importer and Doublets to XML exporter](https://github.com/linksplatform/Data.Doublets.Xml)
\ No newline at end of file
diff --git a/rust/README.ru.md b/rust/README.ru.md
new file mode 100644
index 0000000..e3d1312
--- /dev/null
+++ b/rust/README.ru.md
@@ -0,0 +1,60 @@
+[](https://github.com/linksplatform/Examples.Doublets.CRUD/actions?workflow=CI)
+
+# Examples.Doublets.CRUD.Rust ([english version](https://github.com/linksplatform/Examples.Doublets.CRUD/blob/main/rust/README.md))
+
+Пример для быстрого старта, который показывает как создать, прочитать, обновить и удалить первую [связь](https://github.com/Konard/LinksPlatform/wiki/%D0%A7%D0%90%D0%92%D0%9E#%D0%A7%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-%D1%81%D0%B2%D1%8F%D0%B7%D1%8C) используя [Дуплеты](https://github.com/linksplatform/Data.Doublets) на языке Rust.
+
+## Для запуска требуется
+* Linux, macOS или Windows
+* [Rust](https://rustup.rs/)
+* crate [doublets](https://crates.io/crates/doublets)
+
+## [Код](https://github.com/linksplatform/Examples.Doublets.CRUD/blob/main/rust/src/main.rs)
+
+```rust
+use doublets::{data, mem, unit, Doublets, DoubletsExt, Links};
+
+fn main() -> Result<(), doublets::Error> {
+ // Хранилище дуплетов привязывается к файлу "db.links":
+ let mem = mem::FileMapped::from_path("db.links")?;
+ let mut store = unit::Store::::new(mem)?;
+
+ // Создание связи-дуплета:
+ let link = store.create_link(1, 1)?;
+
+ // Операции чтения:
+ println!("Количество связей в хранилище данных: {}.", store.count_links([store.constants().any, store.constants().any, store.constants().any]));
+ println!("Содержимое хранилища данных:");
+
+ // Означает любой адрес связи или отсутствие ограничения на адрес связи
+ let any = store.constants().any;
+ // Аргументы запроса интерпретируются как ограничения
+ store.each_iter([any, any, any]).for_each(|link| {
+ println!("{link:?}");
+ });
+
+ // Сброс содержимого связи:
+ let updated_link = store.update_link(link, 0, 0)?;
+
+ // Удаление связи:
+ store
+ .delete_with(updated_link, |before, after| {
+ data::Flow::Continue
+ })
+ .map(|_| ())
+}
+```
+
+Ожидаемый вывод:
+
+```
+Количество связей в хранилище данных: 1.
+Содержимое хранилища данных:
+[1, 1, 1]
+```
+
+Посмотрите [документацию по doublets](https://docs.rs/doublets) чтобы изучить подробности.
+
+## Ищите что-то интереснее?
+* [Сравнение между SQLite и Дуплетами](https://github.com/linksplatform/Comparisons.SQLiteVSDoublets)
+* [Поисковый движок со встроенным поисковым роботом, который хранит веб-страницы в Дуплетах](https://github.com/linksplatform/Crawler)
\ No newline at end of file
diff --git a/rust/src/main.rs b/rust/src/main.rs
index e4955e4..fb16de7 100644
--- a/rust/src/main.rs
+++ b/rust/src/main.rs
@@ -1,26 +1,30 @@
use doublets::{data, mem, unit, Doublets, DoubletsExt, Links};
fn main() -> Result<(), doublets::Error> {
- // use file as memory for doublets
+ // A doublet links store is mapped to the "db.links" file:
let mem = mem::FileMapped::from_path("db.links")?;
let mut store = unit::Store::::new(mem)?;
- // create 1: 1 1 - it's point: link where source and target it self
- let point = store.create_link(1, 1)?;
+ // Creating a doublet link:
+ let link = store.create_link(1, 1)?;
- // `any` constant denotes any link
+ // Read operations:
+ println!("The number of links in the data store is {}.", store.count_links([store.constants().any, store.constants().any, store.constants().any]));
+ println!("Data store contents:");
+
+ // Means any link address or that there is no restriction on link address
let any = store.constants().any;
-
- // print all store from store where (index: any, source: any, target: any)
+ // The arguments of a query are restrictions: on address, on source, on target
store.each_iter([any, any, any]).for_each(|link| {
println!("{link:?}");
});
- // delete point with handler (Link, Link)
+ // Cleaning (resetting) the contents of the link:
+ let updated_link = store.update_link(link, 0, 0)?;
+
+ // Removing the link
store
- .delete_with(point, |before, after| {
- println!("delete: {before:?} => {after:?}");
- // track issue: https://github.com/linksplatform/doublets-rs/issues/4
+ .delete_with(updated_link, |before, after| {
data::Flow::Continue
})
.map(|_| ())
diff --git a/rust/target/.rustc_info.json b/rust/target/.rustc_info.json
new file mode 100644
index 0000000..eacd995
--- /dev/null
+++ b/rust/target/.rustc_info.json
@@ -0,0 +1 @@
+{"rustc_fingerprint":174106545887536614,"outputs":{"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/home/hive/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu\noff\npacked\nunpacked\n___\ndebug_assertions\nfmt_debug=\"full\"\noverflow_checks\npanic=\"unwind\"\nproc_macro\nrelocation_model=\"pic\"\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"x87\"\ntarget_has_atomic\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_equal_alignment=\"16\"\ntarget_has_atomic_equal_alignment=\"32\"\ntarget_has_atomic_equal_alignment=\"64\"\ntarget_has_atomic_equal_alignment=\"8\"\ntarget_has_atomic_equal_alignment=\"ptr\"\ntarget_has_atomic_load_store\ntarget_has_atomic_load_store=\"16\"\ntarget_has_atomic_load_store=\"32\"\ntarget_has_atomic_load_store=\"64\"\ntarget_has_atomic_load_store=\"8\"\ntarget_has_atomic_load_store=\"ptr\"\ntarget_has_reliable_f128\ntarget_has_reliable_f16\ntarget_has_reliable_f16_math\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_thread_local\ntarget_vendor=\"unknown\"\nub_checks\nunix\n","stderr":""},"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.91.0-nightly (565a9ca63 2025-09-10)\nbinary: rustc\ncommit-hash: 565a9ca63e9df4b223fed0da01f15e578acfb538\ncommit-date: 2025-09-10\nhost: x86_64-unknown-linux-gnu\nrelease: 1.91.0-nightly\nLLVM version: 21.1.0\n","stderr":""}},"successes":{}}
\ No newline at end of file
diff --git a/rust/target/CACHEDIR.TAG b/rust/target/CACHEDIR.TAG
new file mode 100644
index 0000000..20d7c31
--- /dev/null
+++ b/rust/target/CACHEDIR.TAG
@@ -0,0 +1,3 @@
+Signature: 8a477f597d28d172789f06886806bc55
+# This file is a cache directory tag created by cargo.
+# For information about cache directory tags see https://bford.info/cachedir/