DUB-AI: multi-task модель (тип озвучки + автор-спан + 18+), обучение/инференс/ONNX/сервис, тесты и документация

This commit is contained in:
DUB-AI committed 2026-10-27 16:43:36 +07:00
commit 8dbca3f4a3
2873 files changed
+44479

No files matched your search

+1191
View File
File diff suppressed because it is too large. Load diff
+13
View File
@@ -0,0 +1,13 @@
[package]
name = "dub-ai-onnx-local"
version = "0.1.0"
edition = "2021"
# Путь Б: локальный инференс без Python — ONNX-модель из models/best-onnx.
# cargo run --release -- "../../models/best-onnx" "Перевод: Дублированный | MovieDalen"
# Первая сборка скачивает onnxruntime (фича download-binaries у крейта ort).
[dependencies]
ort = { version = "=2.0.0-rc.15", features = ["download-binaries"] }
tokenizers = { version = "0.21", default-features = false, features = ["onig"] }
serde_json = "1"
+27
View File
@@ -0,0 +1,27 @@
# onnx_local — локальный инференс DUB-AI на Rust (без Python)
```bash
cargo build
# onnxruntime.dll грузится динамически; можно взять из pip-пакета onnxruntime
# (уже есть в .venv проекта) или из официального релиза onnxruntime
ORT_DYLIB_PATH=<путь>/onnxruntime.dll ./target/debug/dub-ai-onnx-local.exe \
"<путь к models/best-onnx>" "Перевод: Дублированный | MovieDalen"
```
Пример из корня проекта (Git Bash):
```bash
cd examples/rust/onnx_local
ORT_DYLIB_PATH="$(find ../../.venv -name onnxruntime.dll | head -1)" \
./target/debug/dub-ai-onnx-local.exe ../../models/best-onnx \
"Авторский (одноголосый закадровый) - Юрий Сербин"
```
Модель должна быть экспортирована заранее: `python -m src.export_onnx`
(создаст `models/best-onnx/`: model.onnx, tokenizer.json, label_maps.json,
aliases.json).
Крейты: `ort 2.0.0-rc.15` (инференс), `tokenizers` (HF tokenizer.json),
`serde_json` (метки/алиасы). Постобработка повторяет `src/predict.py`:
argmax типа и 18+, первый B-I-прогон по offsets → текст спана →
канонизация по aliases.json.
+140
View File
@@ -0,0 +1,140 @@
//! Локальный инференс DUB-AI без Python (путь Б: ONNX).
//!
//! cargo run --release -- <путь к models/best-onnx> "Перевод: Дублированный | MovieDalen"
//!
//! Повторяет препроцессинг/постобработку src/predict.py:
//! токенизация -> ONNX (type_logits, bio_logits, age_logits) ->
//! argmax типа, 18+ и первого B-I-прогона по offsets.
use std::collections::HashMap;
use ort::session::builder::GraphOptimizationLevel;
use ort::session::Session;
use ort::value::Tensor;
use tokenizers::Tokenizer;
fn main() -> Result<(), Box<dyn std::error::Error>> {
let args: Vec<String> = std::env::args().collect();
if args.len() < 3 {
eprintln!("использование: cargo run --release -- <models/best-onnx> \"текст дорожки\"");
std::process::exit(1);
}
let model_dir = &args[1];
let text = &args[2];
// --- метки и алиасы ---------------------------------------------------
let maps: serde_json::Value = serde_json::from_str(&std::fs::read_to_string(
format!("{model_dir}/label_maps.json"),
)?)?;
let types: Vec<String> = maps["types"]
.as_array()
.unwrap()
.iter()
.map(|v| v.as_str().unwrap().to_string())
.collect();
let aliases: serde_json::Value = serde_json::from_str(&std::fs::read_to_string(
format!("{model_dir}/aliases.json"),
)?)?;
let alias_map: HashMap<String, String> = aliases["aliases"]
.as_object()
.unwrap()
.iter()
.map(|(k, v)| (k.clone(), v.as_str().unwrap().to_string()))
.collect();
// --- токенизация -------------------------------------------------------
let tok = Tokenizer::from_file(format!("{model_dir}/tokenizer.json"))
.map_err(|e| e.to_string())?;
let enc = tok.encode(text.as_str(), true).map_err(|e| e.to_string())?;
let ids: Vec<i64> = enc.get_ids().iter().map(|&v| v as i64).collect();
let mask: Vec<i64> = enc.get_attention_mask().iter().map(|&v| v as i64).collect();
let type_ids: Vec<i64> = enc.get_type_ids().iter().map(|&v| v as i64).collect();
let offsets = enc.get_offsets().to_vec();
let seq = ids.len();
// --- ONNX-инференс ------------------------------------------------------
let env = ort::init().build()?;
let mut session = Session::builder(&env)?
.with_optimization_level(GraphOptimizationLevel::Level3)?
.with_intra_threads(2)?
.commit_from_file(format!("{model_dir}/model.onnx"))?;
let shape = [1usize, seq];
let outputs = session.run(ort::inputs![
"input_ids" => Tensor::from_array((shape, ids))?,
"attention_mask" => Tensor::from_array((shape, mask.clone()))?,
"token_type_ids" => Tensor::from_array((shape, type_ids))?,
])?;
let (_, type_logits) = outputs["type_logits"].try_extract_tensor::<f32>()?;
let (_, age_logits) = outputs["age_logits"].try_extract_tensor::<f32>()?;
let (_, bio_flat) = outputs["bio_logits"].try_extract_tensor::<f32>()?;
let type_id = argmax(type_logits.iter().copied());
let age_id = argmax(age_logits.iter().copied());
let label = |token: usize| -> u32 {
let base = token * 3;
let (mut bi, mut bv) = (0u32, bio_flat[base]);
for (c, &v) in bio_flat[base + 1..base + 3].iter().enumerate() {
if v > bv {
bi = c as u32 + 1;
bv = v;
}
}
bi
};
// спан: первый B-токен + цепочка I (только реальные токены)
let mut start_tok = None;
for t in 0..seq {
if mask[t] == 0 {
break;
}
if offsets[t].0 >= offsets[t].1 {
continue; // спецтокены
}
if label(t) == 1 {
start_tok = Some(t);
break;
}
}
let mut span_txt: Option<String> = None;
if let Some(s) = start_tok {
let mut e = s;
for t in s + 1..seq {
if mask[t] == 0 || offsets[t].0 >= offsets[t].1 || label(t) != 2 {
break;
}
e = t;
}
span_txt = Some(text[offsets[s].0..offsets[e].1].trim().to_string());
}
let studio = span_txt.as_ref().map(|s| {
alias_map
.get(&s.to_lowercase())
.cloned()
.unwrap_or_else(|| s.clone())
});
println!(
"тип: {}{}",
types[type_id],
if age_id == 1 { " | 18+" } else { "" }
);
match (&studio, &span_txt) {
(Some(s), Some(sp)) => println!("автор: {s} (спан «{sp}»)"),
_ => println!("автор: —"),
}
println!("текст: {text}");
Ok(())
}
fn argmax<I: Iterator<Item = f32>>(it: I) -> usize {
let mut best = (0usize, f32::MIN);
for (i, v) in it.enumerate() {
if v > best.1 {
best = (i, v);
}
}
best.0
}
@@ -0,0 +1 @@
{"rustc_fingerprint":7970462395228975776,"outputs":{"5414958869613609987":{"success":true,"status":"","code":0,"stdout":"rustc 1.99.1 (58cf8f9c3 2026-10-13)\nbinary: rustc\ncommit-hash: 58cf8f9c35b355199727627d07ae34a4e2846d67\ncommit-date: 2026-10-13\nhost: x86_64-pc-windows-msvc\nrelease: 1.99.1\nLLVM version: 23.1.1\n","stderr":""},"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___.exe\nlib___.rlib\n___.dll\n___.dll\n___.lib\n___.dll\nC:\\Users\\shats\\.rustup\\toolchains\\stable-x86_64-pc-windows-msvc\npacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"msvc\"\ntarget_family=\"windows\"\ntarget_feature=\"cmpxchg16b\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_feature=\"sse3\"\ntarget_has_atomic=\"128\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_has_atomic_primitive_alignment=\"128\"\ntarget_has_atomic_primitive_alignment=\"16\"\ntarget_has_atomic_primitive_alignment=\"32\"\ntarget_has_atomic_primitive_alignment=\"64\"\ntarget_has_atomic_primitive_alignment=\"8\"\ntarget_has_atomic_primitive_alignment=\"ptr\"\ntarget_os=\"windows\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"pc\"\nwindows\n","stderr":""}},"successes":{}}
@@ -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/
Whitespace-only changes.
Whitespace-only changes.
Whitespace-only changes.
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"default\", \"getrandom\", \"runtime-rng\", \"serde\", \"std\"]","declared_features":"[\"atomic-polyfill\", \"compile-time-rng\", \"const-random\", \"default\", \"getrandom\", \"nightly-arm-aes\", \"no-rng\", \"runtime-rng\", \"serde\", \"std\"]","target":17883862002600103897,"profile":11528375766455597691,"path":5568561389237078866,"deps":[[5398981501050481332,"version_check",false,17304863033590517734]],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\ahash-d057b3106f0a9074\\dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
f4d01cd5675011c2
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"default\", \"getrandom\", \"runtime-rng\", \"serde\", \"std\"]","declared_features":"[\"atomic-polyfill\", \"compile-time-rng\", \"const-random\", \"default\", \"getrandom\", \"nightly-arm-aes\", \"no-rng\", \"runtime-rng\", \"serde\", \"std\"]","target":8470944000320059508,"profile":11926785003450549200,"path":2146297622075330288,"deps":[[966925859616469517,"build_script_build",false,8900704671917426416],[4321869508056025743,"zerocopy",false,2632290982216189554],[5855319743879205494,"once_cell",false,9979976404232572773],[6557439603276904804,"serde",false,15624053723140773862],[15482175856213997617,"cfg_if",false,11312962490170189679],[18408407127522236545,"getrandom",false,2068034040429567513]],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\ahash-e4e7be3254012e8c\\dep-lib-ahash","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[966925859616469517,"build_script_build",false,16982082681371921097]],"local":[{"RerunIfChanged":{"output":"debug\\build\\ahash-f8cfadea48df71a0\\output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"default\", \"perf-literal\", \"std\"]","declared_features":"[\"default\", \"logging\", \"perf-literal\", \"std\"]","target":7534583537114156500,"profile":11926785003450549200,"path":6786386444582932478,"deps":[[12613788554453945248,"memchr",false,17430034668736029265]],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\aho-corasick-ddfa93c66967a20b\\dep-lib-aho_corasick","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[]","declared_features":"[]","target":6962977057026645649,"profile":11528375766455597691,"path":556384679085276519,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\autocfg-955d0f4e9b58a756\\dep-lib-autocfg","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
b7a9f4a30ec98f58
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"default\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13060062996227388079,"profile":11926785003450549200,"path":10822504554105910594,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\base64-1992cf4d32c8e6d5\\dep-lib-base64","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
6e1c3f316d2f40f2
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"alloc\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"simd-unsafe\", \"std\"]","target":2839635746193839168,"profile":11528375766455597691,"path":9020867275284855952,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\base64-220d84cd9ede7b71\\dep-lib-base64","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"alloc\"]","declared_features":"[\"alloc\", \"std\"]","target":15548948006327107948,"profile":11528375766455597691,"path":1846031690300937135,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\base64ct-5bc3a2d21277c95a\\dep-lib-base64ct","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[]","declared_features":"[\"arbitrary\", \"bytemuck\", \"example_generated\", \"serde\", \"serde_core\", \"std\"]","target":7691312148208718491,"profile":11926785003450549200,"path":16114404642494873844,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\bitflags-a43b09208d5f229d\\dep-lib-bitflags","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
2a364ff7258eff72
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"extra-platforms\", \"serde\", \"std\"]","target":11402411492164584411,"profile":18027924059503055824,"path":269383349828324711,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\bytes-d1baaa49b0b38f27\\dep-lib-bytes","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"alloc\"]","declared_features":"[\"alloc\", \"default\", \"std\"]","target":13710694652376480987,"profile":11926785003450549200,"path":17990092340696068860,"deps":[[16991438365634268121,"rustversion",false,15780388177985828633]],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\castaway-9af5b8daf11f3d17\\dep-lib-castaway","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
edcd64f3e2a0242a
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[]","declared_features":"[\"compile-commands\", \"jobserver\", \"parallel\"]","target":17166610215175470089,"profile":444002096564945121,"path":2273378291655990968,"deps":[[10927638667673843370,"find_msvc_tools",false,16744331924774281880],[12678166843757613889,"shlex",false,7219554748902096343]],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\cc-813437cca865610b\\dep-lib-cc","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
6fa7e93772b7ff9c
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[]","declared_features":"[\"core\", \"rustc-dep-of-std\"]","target":13840298032947503755,"profile":11926785003450549200,"path":10143533043765886058,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\cfg-if-16ed30e64ce9445d\\dep-lib-cfg_if","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"default\", \"serde\", \"std\"]","declared_features":"[\"arbitrary\", \"borsh\", \"bytes\", \"default\", \"diesel\", \"markup\", \"proptest\", \"quickcheck\", \"rkyv\", \"serde\", \"smallvec\", \"sqlx\", \"sqlx-mysql\", \"sqlx-postgres\", \"sqlx-sqlite\", \"std\", \"zeroize\"]","target":7968499388442294171,"profile":11926785003450549200,"path":18205700819852109508,"deps":[[1127187624154154345,"castaway",false,9023642148393961156],[5532778797167691009,"itoa",false,2234445186326701640],[6400797066282925533,"ryu",false,10416358253513125451],[6557439603276904804,"serde",false,15624053723140773862],[13785866025199020095,"static_assertions",false,16528566243345164726],[15482175856213997617,"cfg_if",false,11312962490170189679],[16991438365634268121,"rustversion",false,15780388177985828633]],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\compact_str-6194f5ca0f98e8a1\\dep-lib-compact_str","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[15481973119957668846,"build_script_build",false,16399980406255434090]],"local":[{"RerunIfChanged":{"output":"debug\\build\\crossbeam-deque-10f8f736cf35d3ac\\output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"std\"]","target":15353977948366730291,"profile":10580611315948247195,"path":1235065407593272532,"deps":[[2543204310390312751,"crossbeam_epoch",false,16546483238664781274],[11050506297539643678,"crossbeam_utils",false,15929384999533974312],[15481973119957668846,"build_script_build",false,7434509869983067336]],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\crossbeam-deque-873968546b85dffd\\dep-lib-crossbeam_deque","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"std\"]","target":5408242616063297496,"profile":8225031023867517122,"path":14663961897241971490,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\crossbeam-deque-9a02c3ae384435ff\\dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"alloc\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"loom\", \"loom-crate\", \"nightly\", \"std\"]","target":16242420667881341737,"profile":10580611315948247195,"path":14467390248188748872,"deps":[[2543204310390312751,"build_script_build",false,3837106829717538774],[11050506297539643678,"crossbeam_utils",false,15929384999533974312]],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\crossbeam-epoch-9001422d484b2bb2\\dep-lib-crossbeam_epoch","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[2543204310390312751,"build_script_build",false,1825229041149345386]],"local":[{"RerunIfChanged":{"output":"debug\\build\\crossbeam-epoch-9df9659d344a3fd1\\output","paths":["build.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"alloc\", \"std\"]","declared_features":"[\"alloc\", \"default\", \"loom\", \"loom-crate\", \"nightly\", \"std\"]","target":5408242616063297496,"profile":8225031023867517122,"path":6172289561691741993,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\crossbeam-epoch-ea0a5cbb134fec1e\\dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"loom\", \"nightly\", \"std\"]","target":9626079250877207070,"profile":10580611315948247195,"path":8408637483422851026,"deps":[[11050506297539643678,"build_script_build",false,14147431449674590334]],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\crossbeam-utils-0a8eb1722e42a504\\dep-lib-crossbeam_utils","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"loom\", \"nightly\", \"std\"]","target":5408242616063297496,"profile":8225031023867517122,"path":14957396065231976397,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\crossbeam-utils-29169bde6346354e\\dep-build-script-build-script-build","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"","declared_features":"","target":0,"profile":0,"path":0,"deps":[[11050506297539643678,"build_script_build",false,2220542959506543943]],"local":[{"RerunIfChanged":{"output":"debug\\build\\crossbeam-utils-798e5e26f35ca096\\output","paths":["no_atomic.rs"]}}],"rustflags":[],"config":0,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
@@ -0,0 +1 @@
{"rustc":222933465615791797,"features":"[\"default\", \"suggestions\"]","declared_features":"[\"default\", \"diagnostics\", \"suggestions\"]","target":10425393644641512883,"profile":3188569367139266033,"path":272311993486449850,"deps":[[391311489375721310,"darling_macro",false,7090050629657004166],[7492649247881633246,"darling_core",false,5677831891801344231]],"local":[{"CheckDepInfo":{"dep_info":"debug\\.fingerprint\\darling-cd836b7f95d2adf2\\dep-lib-darling","checksum":false}}],"rustflags":[],"config":9396254390672932401,"compile_kind":0}
@@ -0,0 +1 @@
This file has an mtime of when this was started.
Loaded 100 of 2873 files, more files were not shown because too many files have changed in this diff. Show more