mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-08-19 10:00:27 +00:00
Revert "Handle dev-dependency cycles"
This commit is contained in:
parent
a96bb452a7
commit
10d7d7304b
13 changed files with 52 additions and 1798 deletions
2
Cargo.lock
generated
2
Cargo.lock
generated
|
@ -87,7 +87,6 @@ name = "base-db"
|
||||||
version = "0.0.0"
|
version = "0.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"cfg",
|
"cfg",
|
||||||
"indexmap",
|
|
||||||
"la-arena",
|
"la-arena",
|
||||||
"profile",
|
"profile",
|
||||||
"rustc-hash",
|
"rustc-hash",
|
||||||
|
@ -580,7 +579,6 @@ dependencies = [
|
||||||
"hir-def",
|
"hir-def",
|
||||||
"hir-expand",
|
"hir-expand",
|
||||||
"hkalbasi-rustc-ap-rustc_index",
|
"hkalbasi-rustc-ap-rustc_index",
|
||||||
"indexmap",
|
|
||||||
"intern",
|
"intern",
|
||||||
"itertools",
|
"itertools",
|
||||||
"la-arena",
|
"la-arena",
|
||||||
|
|
|
@ -14,7 +14,6 @@ doctest = false
|
||||||
[dependencies]
|
[dependencies]
|
||||||
salsa = "0.17.0-pre.2"
|
salsa = "0.17.0-pre.2"
|
||||||
rustc-hash = "1.1.0"
|
rustc-hash = "1.1.0"
|
||||||
indexmap = "1.6.0"
|
|
||||||
|
|
||||||
la-arena = { version = "0.3.0", path = "../../lib/la-arena" }
|
la-arena = { version = "0.3.0", path = "../../lib/la-arena" }
|
||||||
|
|
||||||
|
|
|
@ -417,11 +417,6 @@ impl CrateGraph {
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn duplicate(&mut self, id: CrateId) -> CrateId {
|
|
||||||
let data = self[id].clone();
|
|
||||||
self.arena.alloc(data)
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn add_dep(
|
pub fn add_dep(
|
||||||
&mut self,
|
&mut self,
|
||||||
from: CrateId,
|
from: CrateId,
|
||||||
|
@ -617,12 +612,6 @@ impl ops::Index<CrateId> for CrateGraph {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl ops::IndexMut<CrateId> for CrateGraph {
|
|
||||||
fn index_mut(&mut self, crate_id: CrateId) -> &mut CrateData {
|
|
||||||
&mut self.arena[crate_id]
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
impl CrateData {
|
impl CrateData {
|
||||||
fn add_dep(&mut self, dep: Dependency) {
|
fn add_dep(&mut self, dep: Dependency) {
|
||||||
self.dependencies.push(dep)
|
self.dependencies.push(dep)
|
||||||
|
|
|
@ -6,10 +6,9 @@ mod input;
|
||||||
mod change;
|
mod change;
|
||||||
pub mod fixture;
|
pub mod fixture;
|
||||||
|
|
||||||
use std::{hash::BuildHasherDefault, panic, sync::Arc};
|
use std::{panic, sync::Arc};
|
||||||
|
|
||||||
use indexmap::IndexSet;
|
use rustc_hash::FxHashSet;
|
||||||
use rustc_hash::FxHasher;
|
|
||||||
use syntax::{ast, Parse, SourceFile, TextRange, TextSize};
|
use syntax::{ast, Parse, SourceFile, TextRange, TextSize};
|
||||||
|
|
||||||
pub use crate::{
|
pub use crate::{
|
||||||
|
@ -60,10 +59,7 @@ pub trait FileLoader {
|
||||||
/// Text of the file.
|
/// Text of the file.
|
||||||
fn file_text(&self, file_id: FileId) -> Arc<str>;
|
fn file_text(&self, file_id: FileId) -> Arc<str>;
|
||||||
fn resolve_path(&self, path: AnchoredPath<'_>) -> Option<FileId>;
|
fn resolve_path(&self, path: AnchoredPath<'_>) -> Option<FileId>;
|
||||||
fn relevant_crates(
|
fn relevant_crates(&self, file_id: FileId) -> Arc<FxHashSet<CrateId>>;
|
||||||
&self,
|
|
||||||
file_id: FileId,
|
|
||||||
) -> Arc<IndexSet<CrateId, BuildHasherDefault<FxHasher>>>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Database which stores all significant input facts: source code and project
|
/// Database which stores all significant input facts: source code and project
|
||||||
|
@ -103,16 +99,10 @@ pub trait SourceDatabaseExt: SourceDatabase {
|
||||||
#[salsa::input]
|
#[salsa::input]
|
||||||
fn source_root(&self, id: SourceRootId) -> Arc<SourceRoot>;
|
fn source_root(&self, id: SourceRootId) -> Arc<SourceRoot>;
|
||||||
|
|
||||||
fn source_root_crates(
|
fn source_root_crates(&self, id: SourceRootId) -> Arc<FxHashSet<CrateId>>;
|
||||||
&self,
|
|
||||||
id: SourceRootId,
|
|
||||||
) -> Arc<IndexSet<CrateId, BuildHasherDefault<FxHasher>>>;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn source_root_crates(
|
fn source_root_crates(db: &dyn SourceDatabaseExt, id: SourceRootId) -> Arc<FxHashSet<CrateId>> {
|
||||||
db: &dyn SourceDatabaseExt,
|
|
||||||
id: SourceRootId,
|
|
||||||
) -> Arc<IndexSet<CrateId, BuildHasherDefault<FxHasher>>> {
|
|
||||||
let graph = db.crate_graph();
|
let graph = db.crate_graph();
|
||||||
let res = graph
|
let res = graph
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -138,10 +128,7 @@ impl<T: SourceDatabaseExt> FileLoader for FileLoaderDelegate<&'_ T> {
|
||||||
source_root.resolve_path(path)
|
source_root.resolve_path(path)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn relevant_crates(
|
fn relevant_crates(&self, file_id: FileId) -> Arc<FxHashSet<CrateId>> {
|
||||||
&self,
|
|
||||||
file_id: FileId,
|
|
||||||
) -> Arc<IndexSet<CrateId, BuildHasherDefault<FxHasher>>> {
|
|
||||||
let _p = profile::span("relevant_crates");
|
let _p = profile::span("relevant_crates");
|
||||||
let source_root = self.0.file_source_root(file_id);
|
let source_root = self.0.file_source_root(file_id);
|
||||||
self.0.source_root_crates(source_root)
|
self.0.source_root_crates(source_root)
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
//! Database used for testing `hir_def`.
|
//! Database used for testing `hir_def`.
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
fmt,
|
fmt, panic,
|
||||||
hash::BuildHasherDefault,
|
|
||||||
panic,
|
|
||||||
sync::{Arc, Mutex},
|
sync::{Arc, Mutex},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -13,8 +11,7 @@ use base_db::{
|
||||||
Upcast,
|
Upcast,
|
||||||
};
|
};
|
||||||
use hir_expand::{db::ExpandDatabase, InFile};
|
use hir_expand::{db::ExpandDatabase, InFile};
|
||||||
use indexmap::IndexSet;
|
use rustc_hash::FxHashSet;
|
||||||
use rustc_hash::FxHasher;
|
|
||||||
use syntax::{algo, ast, AstNode};
|
use syntax::{algo, ast, AstNode};
|
||||||
|
|
||||||
use crate::{
|
use crate::{
|
||||||
|
@ -80,10 +77,7 @@ impl FileLoader for TestDB {
|
||||||
fn resolve_path(&self, path: AnchoredPath<'_>) -> Option<FileId> {
|
fn resolve_path(&self, path: AnchoredPath<'_>) -> Option<FileId> {
|
||||||
FileLoaderDelegate(self).resolve_path(path)
|
FileLoaderDelegate(self).resolve_path(path)
|
||||||
}
|
}
|
||||||
fn relevant_crates(
|
fn relevant_crates(&self, file_id: FileId) -> Arc<FxHashSet<CrateId>> {
|
||||||
&self,
|
|
||||||
file_id: FileId,
|
|
||||||
) -> Arc<IndexSet<CrateId, BuildHasherDefault<FxHasher>>> {
|
|
||||||
FileLoaderDelegate(self).relevant_crates(file_id)
|
FileLoaderDelegate(self).relevant_crates(file_id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -30,7 +30,6 @@ la-arena = { version = "0.3.0", path = "../../lib/la-arena" }
|
||||||
once_cell = "1.17.0"
|
once_cell = "1.17.0"
|
||||||
typed-arena = "2.0.1"
|
typed-arena = "2.0.1"
|
||||||
rustc_index = { version = "0.0.20221221", package = "hkalbasi-rustc-ap-rustc_index", default-features = false }
|
rustc_index = { version = "0.0.20221221", package = "hkalbasi-rustc-ap-rustc_index", default-features = false }
|
||||||
indexmap = "1.6.0"
|
|
||||||
|
|
||||||
# local deps
|
# local deps
|
||||||
stdx.workspace = true
|
stdx.workspace = true
|
||||||
|
|
|
@ -1,9 +1,7 @@
|
||||||
//! Database used for testing `hir`.
|
//! Database used for testing `hir`.
|
||||||
|
|
||||||
use std::{
|
use std::{
|
||||||
fmt,
|
fmt, panic,
|
||||||
hash::BuildHasherDefault,
|
|
||||||
panic,
|
|
||||||
sync::{Arc, Mutex},
|
sync::{Arc, Mutex},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -13,8 +11,7 @@ use base_db::{
|
||||||
};
|
};
|
||||||
use hir_def::{db::DefDatabase, ModuleId};
|
use hir_def::{db::DefDatabase, ModuleId};
|
||||||
use hir_expand::db::ExpandDatabase;
|
use hir_expand::db::ExpandDatabase;
|
||||||
use indexmap::IndexSet;
|
use rustc_hash::FxHashSet;
|
||||||
use rustc_hash::FxHasher;
|
|
||||||
use stdx::hash::NoHashHashMap;
|
use stdx::hash::NoHashHashMap;
|
||||||
use syntax::TextRange;
|
use syntax::TextRange;
|
||||||
use test_utils::extract_annotations;
|
use test_utils::extract_annotations;
|
||||||
|
@ -85,10 +82,7 @@ impl FileLoader for TestDB {
|
||||||
fn resolve_path(&self, path: AnchoredPath<'_>) -> Option<FileId> {
|
fn resolve_path(&self, path: AnchoredPath<'_>) -> Option<FileId> {
|
||||||
FileLoaderDelegate(self).resolve_path(path)
|
FileLoaderDelegate(self).resolve_path(path)
|
||||||
}
|
}
|
||||||
fn relevant_crates(
|
fn relevant_crates(&self, file_id: FileId) -> Arc<FxHashSet<CrateId>> {
|
||||||
&self,
|
|
||||||
file_id: FileId,
|
|
||||||
) -> Arc<IndexSet<CrateId, BuildHasherDefault<FxHasher>>> {
|
|
||||||
FileLoaderDelegate(self).relevant_crates(file_id)
|
FileLoaderDelegate(self).relevant_crates(file_id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -119,9 +119,7 @@ impl SourceToDefCtx<'_, '_> {
|
||||||
pub(super) fn file_to_def(&self, file: FileId) -> SmallVec<[ModuleId; 1]> {
|
pub(super) fn file_to_def(&self, file: FileId) -> SmallVec<[ModuleId; 1]> {
|
||||||
let _p = profile::span("SourceBinder::to_module_def");
|
let _p = profile::span("SourceBinder::to_module_def");
|
||||||
let mut mods = SmallVec::new();
|
let mut mods = SmallVec::new();
|
||||||
// HACK: We iterate in reverse so that dev-dependency duplicated crates appear first in this
|
for &crate_id in self.db.relevant_crates(file).iter() {
|
||||||
// Most code only deals with one module and we want to prefer the test enabled code where possible
|
|
||||||
for &crate_id in self.db.relevant_crates(file).iter().rev() {
|
|
||||||
// FIXME: inner items
|
// FIXME: inner items
|
||||||
let crate_def_map = self.db.crate_def_map(crate_id);
|
let crate_def_map = self.db.crate_def_map(crate_id);
|
||||||
mods.extend(
|
mods.extend(
|
||||||
|
|
|
@ -43,7 +43,7 @@ pub mod syntax_helpers {
|
||||||
pub use parser::LexedStr;
|
pub use parser::LexedStr;
|
||||||
}
|
}
|
||||||
|
|
||||||
use std::{fmt, hash::BuildHasherDefault, mem::ManuallyDrop, sync::Arc};
|
use std::{fmt, mem::ManuallyDrop, sync::Arc};
|
||||||
|
|
||||||
use base_db::{
|
use base_db::{
|
||||||
salsa::{self, Durability},
|
salsa::{self, Durability},
|
||||||
|
@ -53,7 +53,6 @@ use hir::{
|
||||||
db::{DefDatabase, ExpandDatabase, HirDatabase},
|
db::{DefDatabase, ExpandDatabase, HirDatabase},
|
||||||
symbols::FileSymbolKind,
|
symbols::FileSymbolKind,
|
||||||
};
|
};
|
||||||
use indexmap::IndexSet;
|
|
||||||
|
|
||||||
use crate::{line_index::LineIndex, symbol_index::SymbolsDatabase};
|
use crate::{line_index::LineIndex, symbol_index::SymbolsDatabase};
|
||||||
pub use rustc_hash::{FxHashMap, FxHashSet, FxHasher};
|
pub use rustc_hash::{FxHashMap, FxHashSet, FxHasher};
|
||||||
|
@ -120,10 +119,7 @@ impl FileLoader for RootDatabase {
|
||||||
fn resolve_path(&self, path: AnchoredPath<'_>) -> Option<FileId> {
|
fn resolve_path(&self, path: AnchoredPath<'_>) -> Option<FileId> {
|
||||||
FileLoaderDelegate(self).resolve_path(path)
|
FileLoaderDelegate(self).resolve_path(path)
|
||||||
}
|
}
|
||||||
fn relevant_crates(
|
fn relevant_crates(&self, file_id: FileId) -> Arc<FxHashSet<CrateId>> {
|
||||||
&self,
|
|
||||||
file_id: FileId,
|
|
||||||
) -> Arc<IndexSet<CrateId, BuildHasherDefault<FxHasher>>> {
|
|
||||||
FileLoaderDelegate(self).relevant_crates(file_id)
|
FileLoaderDelegate(self).relevant_crates(file_id)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -5,7 +5,7 @@ use std::{
|
||||||
|
|
||||||
use base_db::{CrateGraph, FileId, ProcMacroPaths};
|
use base_db::{CrateGraph, FileId, ProcMacroPaths};
|
||||||
use cfg::{CfgAtom, CfgDiff};
|
use cfg::{CfgAtom, CfgDiff};
|
||||||
use expect_test::{expect, expect_file, Expect, ExpectFile};
|
use expect_test::{expect, Expect};
|
||||||
use paths::{AbsPath, AbsPathBuf};
|
use paths::{AbsPath, AbsPathBuf};
|
||||||
use serde::de::DeserializeOwned;
|
use serde::de::DeserializeOwned;
|
||||||
|
|
||||||
|
@ -114,11 +114,6 @@ fn check_crate_graph(crate_graph: CrateGraph, expect: Expect) {
|
||||||
replace_root(&mut crate_graph, false);
|
replace_root(&mut crate_graph, false);
|
||||||
expect.assert_eq(&crate_graph);
|
expect.assert_eq(&crate_graph);
|
||||||
}
|
}
|
||||||
fn check_crate_graph_f(crate_graph: CrateGraph, expect: ExpectFile) {
|
|
||||||
let mut crate_graph = format!("{crate_graph:#?}");
|
|
||||||
replace_root(&mut crate_graph, false);
|
|
||||||
expect.assert_eq(&crate_graph);
|
|
||||||
}
|
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn cargo_hello_world_project_model_with_wildcard_overrides() {
|
fn cargo_hello_world_project_model_with_wildcard_overrides() {
|
||||||
|
@ -1671,12 +1666,3 @@ fn rust_project_is_proc_macro_has_proc_macro_dep() {
|
||||||
// on the proc_macro sysroot crate.
|
// on the proc_macro sysroot crate.
|
||||||
crate_data.dependencies.iter().find(|&dep| dep.name.deref() == "proc_macro").unwrap();
|
crate_data.dependencies.iter().find(|&dep| dep.name.deref() == "proc_macro").unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
|
||||||
fn cargo_dev_dependencies() {
|
|
||||||
let (crate_graph, _proc_macros) = load_cargo("complex-with-dev-deps.json");
|
|
||||||
check_crate_graph_f(
|
|
||||||
crate_graph,
|
|
||||||
expect_file!["../test_data/cargo_dev_dependencies-crate-graph.txt"],
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
|
@ -2,12 +2,7 @@
|
||||||
//! metadata` or `rust-project.json`) into representation stored in the salsa
|
//! metadata` or `rust-project.json`) into representation stored in the salsa
|
||||||
//! database -- `CrateGraph`.
|
//! database -- `CrateGraph`.
|
||||||
|
|
||||||
use std::{
|
use std::{collections::VecDeque, fmt, fs, process::Command, sync::Arc};
|
||||||
collections::{hash_map::Entry, VecDeque},
|
|
||||||
fmt, fs,
|
|
||||||
process::Command,
|
|
||||||
sync::Arc,
|
|
||||||
};
|
|
||||||
|
|
||||||
use anyhow::{format_err, Context, Result};
|
use anyhow::{format_err, Context, Result};
|
||||||
use base_db::{
|
use base_db::{
|
||||||
|
@ -849,12 +844,12 @@ fn cargo_to_crate_graph(
|
||||||
None => (SysrootPublicDeps::default(), None),
|
None => (SysrootPublicDeps::default(), None),
|
||||||
};
|
};
|
||||||
|
|
||||||
let cfg_options = forced_cfg.clone().unwrap_or_else(|| {
|
let cfg_options = {
|
||||||
let mut cfg_options = CfgOptions::default();
|
let mut cfg_options = CfgOptions::default();
|
||||||
cfg_options.extend(rustc_cfg);
|
cfg_options.extend(rustc_cfg);
|
||||||
cfg_options.insert_atom("debug_assertions".into());
|
cfg_options.insert_atom("debug_assertions".into());
|
||||||
cfg_options
|
cfg_options
|
||||||
});
|
};
|
||||||
|
|
||||||
// Mapping of a package to its library target
|
// Mapping of a package to its library target
|
||||||
let mut pkg_to_lib_crate = FxHashMap::default();
|
let mut pkg_to_lib_crate = FxHashMap::default();
|
||||||
|
@ -866,6 +861,32 @@ fn cargo_to_crate_graph(
|
||||||
for pkg in cargo.packages() {
|
for pkg in cargo.packages() {
|
||||||
has_private |= cargo[pkg].metadata.rustc_private;
|
has_private |= cargo[pkg].metadata.rustc_private;
|
||||||
|
|
||||||
|
let cfg_options = forced_cfg.clone().unwrap_or_else(|| {
|
||||||
|
let mut cfg_options = cfg_options.clone();
|
||||||
|
|
||||||
|
// Add test cfg for local crates
|
||||||
|
if cargo[pkg].is_local {
|
||||||
|
cfg_options.insert_atom("test".into());
|
||||||
|
}
|
||||||
|
|
||||||
|
let overrides = match override_cfg {
|
||||||
|
CfgOverrides::Wildcard(cfg_diff) => Some(cfg_diff),
|
||||||
|
CfgOverrides::Selective(cfg_overrides) => cfg_overrides.get(&cargo[pkg].name),
|
||||||
|
};
|
||||||
|
|
||||||
|
if let Some(overrides) = overrides {
|
||||||
|
// FIXME: this is sort of a hack to deal with #![cfg(not(test))] vanishing such as seen
|
||||||
|
// in ed25519_dalek (#7243), and libcore (#9203) (although you only hit that one while
|
||||||
|
// working on rust-lang/rust as that's the only time it appears outside sysroot).
|
||||||
|
//
|
||||||
|
// A more ideal solution might be to reanalyze crates based on where the cursor is and
|
||||||
|
// figure out the set of cfgs that would have to apply to make it active.
|
||||||
|
|
||||||
|
cfg_options.apply_diff(overrides.clone());
|
||||||
|
};
|
||||||
|
cfg_options
|
||||||
|
});
|
||||||
|
|
||||||
let mut lib_tgt = None;
|
let mut lib_tgt = None;
|
||||||
for &tgt in cargo[pkg].targets.iter() {
|
for &tgt in cargo[pkg].targets.iter() {
|
||||||
if cargo[tgt].kind != TargetKind::Lib && !cargo[pkg].is_member {
|
if cargo[tgt].kind != TargetKind::Lib && !cargo[pkg].is_member {
|
||||||
|
@ -876,7 +897,7 @@ fn cargo_to_crate_graph(
|
||||||
// https://github.com/rust-lang/rust-analyzer/issues/11300
|
// https://github.com/rust-lang/rust-analyzer/issues/11300
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let Some(file_id) = load(&cargo[tgt].root) else { continue };
|
let Some(file_id) = load(&cargo[tgt].root) else { continue };
|
||||||
|
|
||||||
let crate_id = add_target_crate_root(
|
let crate_id = add_target_crate_root(
|
||||||
crate_graph,
|
crate_graph,
|
||||||
|
@ -904,19 +925,15 @@ fn cargo_to_crate_graph(
|
||||||
pkg_crates.entry(pkg).or_insert_with(Vec::new).push((crate_id, cargo[tgt].kind));
|
pkg_crates.entry(pkg).or_insert_with(Vec::new).push((crate_id, cargo[tgt].kind));
|
||||||
}
|
}
|
||||||
|
|
||||||
let Some(targets) = pkg_crates.get(&pkg) else { continue };
|
|
||||||
// Set deps to the core, std and to the lib target of the current package
|
// Set deps to the core, std and to the lib target of the current package
|
||||||
for &(from, kind) in targets {
|
for &(from, kind) in pkg_crates.get(&pkg).into_iter().flatten() {
|
||||||
// Add sysroot deps first so that a lib target named `core` etc. can overwrite them.
|
// Add sysroot deps first so that a lib target named `core` etc. can overwrite them.
|
||||||
public_deps.add_to_crate_graph(crate_graph, from);
|
public_deps.add_to_crate_graph(crate_graph, from);
|
||||||
|
|
||||||
// Add dep edge of all targets to the package's lib target
|
// Add dep edge of all targets to the package's lib target
|
||||||
if let Some((to, name)) = lib_tgt.clone() {
|
if let Some((to, name)) = lib_tgt.clone() {
|
||||||
if to != from {
|
if to != from && kind != TargetKind::BuildScript {
|
||||||
if kind == TargetKind::BuildScript {
|
// (build script can not depend on its library target)
|
||||||
// build script can not depend on its library target
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// For root projects with dashes in their name,
|
// For root projects with dashes in their name,
|
||||||
// cargo metadata does not do any normalization,
|
// cargo metadata does not do any normalization,
|
||||||
|
@ -928,47 +945,6 @@ fn cargo_to_crate_graph(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// We now need to duplicate workspace members that are used as dev-dependencies to prevent
|
|
||||||
// cycles from forming.
|
|
||||||
|
|
||||||
// Map from crate id to it's dev-dependency clone id
|
|
||||||
let mut test_dupes = FxHashMap::default();
|
|
||||||
let mut work = vec![];
|
|
||||||
|
|
||||||
// Get all dependencies of the workspace members that are used as dev-dependencies
|
|
||||||
for pkg in cargo.packages() {
|
|
||||||
for dep in &cargo[pkg].dependencies {
|
|
||||||
if dep.kind == DepKind::Dev && cargo[dep.pkg].is_member {
|
|
||||||
work.push(dep.pkg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
while let Some(pkg) = work.pop() {
|
|
||||||
let Some(&to) = pkg_to_lib_crate.get(&pkg) else { continue };
|
|
||||||
match test_dupes.entry(to) {
|
|
||||||
Entry::Occupied(_) => continue,
|
|
||||||
Entry::Vacant(v) => {
|
|
||||||
for dep in &cargo[pkg].dependencies {
|
|
||||||
if dep.kind == DepKind::Normal && cargo[dep.pkg].is_member {
|
|
||||||
work.push(dep.pkg);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
v.insert({
|
|
||||||
let duped = crate_graph.duplicate(to);
|
|
||||||
tracing::info!(
|
|
||||||
"duplicating workspace crate {:?} as it is being used as a dev-dependency: {to:?} -> {duped:?}",
|
|
||||||
crate_graph[to].display_name
|
|
||||||
);
|
|
||||||
if let Some(proc_macro) = proc_macros.get(&to).cloned() {
|
|
||||||
proc_macros.insert(duped, proc_macro);
|
|
||||||
}
|
|
||||||
crate_graph[duped].cfg_options.insert_atom("test".into());
|
|
||||||
duped
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Now add a dep edge from all targets of upstream to the lib
|
// Now add a dep edge from all targets of upstream to the lib
|
||||||
// target of downstream.
|
// target of downstream.
|
||||||
for pkg in cargo.packages() {
|
for pkg in cargo.packages() {
|
||||||
|
@ -982,71 +958,12 @@ fn cargo_to_crate_graph(
|
||||||
if (dep.kind == DepKind::Build) != (kind == TargetKind::BuildScript) {
|
if (dep.kind == DepKind::Build) != (kind == TargetKind::BuildScript) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
add_dep(
|
|
||||||
crate_graph,
|
|
||||||
from,
|
|
||||||
name.clone(),
|
|
||||||
if dep.kind == DepKind::Dev {
|
|
||||||
// point to the test enabled duplicate for dev-dependencies
|
|
||||||
test_dupes.get(&to).copied().unwrap_or(to)
|
|
||||||
} else {
|
|
||||||
to
|
|
||||||
},
|
|
||||||
);
|
|
||||||
|
|
||||||
if dep.kind == DepKind::Normal && cargo[dep.pkg].is_member {
|
add_dep(crate_graph, from, name.clone(), to)
|
||||||
// Also apply the dependency as a test enabled dependency to the test duplicate
|
|
||||||
if let Some(&dupe) = test_dupes.get(&from) {
|
|
||||||
let to = test_dupes.get(&to).copied().unwrap_or_else(|| {
|
|
||||||
panic!(
|
|
||||||
"dependency of a dev dependency did not get duplicated! {:?} {:?}",
|
|
||||||
crate_graph[to].display_name, crate_graph[from].display_name,
|
|
||||||
)
|
|
||||||
});
|
|
||||||
add_dep(crate_graph, dupe, name.clone(), to);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (&pkg, targets) in &pkg_crates {
|
|
||||||
for &(krate, _) in targets {
|
|
||||||
if let Some(&dupe) = test_dupes.get(&krate) {
|
|
||||||
tracing::info!(
|
|
||||||
"{krate:?} {:?} {dupe:?} {:?}",
|
|
||||||
crate_graph[krate].cfg_options,
|
|
||||||
crate_graph[dupe].cfg_options
|
|
||||||
);
|
|
||||||
// if the crate got duped as a dev-dep the dupe already has test set
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
let cfg_options = &mut crate_graph[krate].cfg_options;
|
|
||||||
|
|
||||||
// Add test cfg for local crates
|
|
||||||
if cargo[pkg].is_local {
|
|
||||||
cfg_options.insert_atom("test".into());
|
|
||||||
}
|
|
||||||
|
|
||||||
let overrides = match override_cfg {
|
|
||||||
CfgOverrides::Wildcard(cfg_diff) => Some(cfg_diff),
|
|
||||||
CfgOverrides::Selective(cfg_overrides) => cfg_overrides.get(&cargo[pkg].name),
|
|
||||||
};
|
|
||||||
|
|
||||||
if let Some(overrides) = overrides {
|
|
||||||
// FIXME: this is sort of a hack to deal with #![cfg(not(test))] vanishing such as seen
|
|
||||||
// in ed25519_dalek (#7243), and libcore (#9203) (although you only hit that one while
|
|
||||||
// working on rust-lang/rust as that's the only time it appears outside sysroot).
|
|
||||||
//
|
|
||||||
// A more ideal solution might be to reanalyze crates based on where the cursor is and
|
|
||||||
// figure out the set of cfgs that would have to apply to make it active.
|
|
||||||
|
|
||||||
cfg_options.apply_diff(overrides.clone());
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FIXME: Handle rustc private crates properly when used as dev-dependencies
|
|
||||||
if has_private {
|
if has_private {
|
||||||
// If the user provided a path to rustc sources, we add all the rustc_private crates
|
// If the user provided a path to rustc sources, we add all the rustc_private crates
|
||||||
// and create dependencies on them for the crates which opt-in to that
|
// and create dependencies on them for the crates which opt-in to that
|
||||||
|
@ -1170,9 +1087,7 @@ fn handle_rustc_crates(
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for dep in &rustc_workspace[pkg].dependencies {
|
for dep in &rustc_workspace[pkg].dependencies {
|
||||||
if dep.kind == DepKind::Normal {
|
queue.push_back(dep.pkg);
|
||||||
queue.push_back(dep.pkg);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut cfg_options = cfg_options.clone();
|
let mut cfg_options = cfg_options.clone();
|
||||||
|
@ -1482,12 +1397,10 @@ fn handle_hack_cargo_workspace(
|
||||||
.collect()
|
.collect()
|
||||||
}
|
}
|
||||||
|
|
||||||
#[track_caller]
|
|
||||||
fn add_dep(graph: &mut CrateGraph, from: CrateId, name: CrateName, to: CrateId) {
|
fn add_dep(graph: &mut CrateGraph, from: CrateId, name: CrateName, to: CrateId) {
|
||||||
add_dep_inner(graph, from, Dependency::new(name, to))
|
add_dep_inner(graph, from, Dependency::new(name, to))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[track_caller]
|
|
||||||
fn add_dep_with_prelude(
|
fn add_dep_with_prelude(
|
||||||
graph: &mut CrateGraph,
|
graph: &mut CrateGraph,
|
||||||
from: CrateId,
|
from: CrateId,
|
||||||
|
@ -1498,18 +1411,13 @@ fn add_dep_with_prelude(
|
||||||
add_dep_inner(graph, from, Dependency::with_prelude(name, to, prelude))
|
add_dep_inner(graph, from, Dependency::with_prelude(name, to, prelude))
|
||||||
}
|
}
|
||||||
|
|
||||||
#[track_caller]
|
|
||||||
fn add_proc_macro_dep(crate_graph: &mut CrateGraph, from: CrateId, to: CrateId, prelude: bool) {
|
fn add_proc_macro_dep(crate_graph: &mut CrateGraph, from: CrateId, to: CrateId, prelude: bool) {
|
||||||
add_dep_with_prelude(crate_graph, from, CrateName::new("proc_macro").unwrap(), to, prelude);
|
add_dep_with_prelude(crate_graph, from, CrateName::new("proc_macro").unwrap(), to, prelude);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[track_caller]
|
|
||||||
fn add_dep_inner(graph: &mut CrateGraph, from: CrateId, dep: Dependency) {
|
fn add_dep_inner(graph: &mut CrateGraph, from: CrateId, dep: Dependency) {
|
||||||
if let Err(err) = graph.add_dep(from, dep) {
|
if let Err(err) = graph.add_dep(from, dep) {
|
||||||
if cfg!(test) {
|
tracing::error!("{}", err)
|
||||||
panic!("{}", err);
|
|
||||||
}
|
|
||||||
tracing::error!("{}", err);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,609 +0,0 @@
|
||||||
{
|
|
||||||
0: CrateData {
|
|
||||||
root_file_id: FileId(
|
|
||||||
1,
|
|
||||||
),
|
|
||||||
edition: Edition2018,
|
|
||||||
version: Some(
|
|
||||||
"0.7.20",
|
|
||||||
),
|
|
||||||
display_name: Some(
|
|
||||||
CrateDisplayName {
|
|
||||||
crate_name: CrateName(
|
|
||||||
"aho_corasick",
|
|
||||||
),
|
|
||||||
canonical_name: "aho_corasick",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
cfg_options: CfgOptions(
|
|
||||||
[
|
|
||||||
"debug_assertions",
|
|
||||||
"feature=default",
|
|
||||||
"feature=std",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
potential_cfg_options: Some(
|
|
||||||
CfgOptions(
|
|
||||||
[
|
|
||||||
"debug_assertions",
|
|
||||||
"feature=default",
|
|
||||||
"feature=std",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
env: Env {
|
|
||||||
entries: {
|
|
||||||
"CARGO_PKG_LICENSE": "",
|
|
||||||
"CARGO_PKG_VERSION_MAJOR": "0",
|
|
||||||
"CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/aho-corasick-0.7.20",
|
|
||||||
"CARGO_PKG_VERSION": "0.7.20",
|
|
||||||
"CARGO_PKG_AUTHORS": "",
|
|
||||||
"CARGO_CRATE_NAME": "aho_corasick",
|
|
||||||
"CARGO_PKG_LICENSE_FILE": "",
|
|
||||||
"CARGO_PKG_HOMEPAGE": "",
|
|
||||||
"CARGO_PKG_DESCRIPTION": "",
|
|
||||||
"CARGO_PKG_NAME": "aho-corasick",
|
|
||||||
"CARGO_PKG_VERSION_PATCH": "20",
|
|
||||||
"CARGO": "cargo",
|
|
||||||
"CARGO_PKG_REPOSITORY": "",
|
|
||||||
"CARGO_PKG_VERSION_MINOR": "7",
|
|
||||||
"CARGO_PKG_VERSION_PRE": "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
dependencies: [
|
|
||||||
Dependency {
|
|
||||||
crate_id: Idx::<CrateData>(2),
|
|
||||||
name: CrateName(
|
|
||||||
"memchr",
|
|
||||||
),
|
|
||||||
prelude: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
origin: Library {
|
|
||||||
repo: Some(
|
|
||||||
"https://github.com/BurntSushi/aho-corasick",
|
|
||||||
),
|
|
||||||
name: "aho-corasick",
|
|
||||||
},
|
|
||||||
is_proc_macro: false,
|
|
||||||
target_layout: Err(
|
|
||||||
"target_data_layout not loaded",
|
|
||||||
),
|
|
||||||
channel: None,
|
|
||||||
},
|
|
||||||
1: CrateData {
|
|
||||||
root_file_id: FileId(
|
|
||||||
2,
|
|
||||||
),
|
|
||||||
edition: Edition2021,
|
|
||||||
version: Some(
|
|
||||||
"0.3.0",
|
|
||||||
),
|
|
||||||
display_name: Some(
|
|
||||||
CrateDisplayName {
|
|
||||||
crate_name: CrateName(
|
|
||||||
"la_arena",
|
|
||||||
),
|
|
||||||
canonical_name: "la-arena",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
cfg_options: CfgOptions(
|
|
||||||
[
|
|
||||||
"debug_assertions",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
potential_cfg_options: None,
|
|
||||||
env: Env {
|
|
||||||
entries: {
|
|
||||||
"CARGO_PKG_LICENSE": "",
|
|
||||||
"CARGO_PKG_VERSION_MAJOR": "0",
|
|
||||||
"CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/la-arena-0.3.0",
|
|
||||||
"CARGO_PKG_VERSION": "0.3.0",
|
|
||||||
"CARGO_PKG_AUTHORS": "",
|
|
||||||
"CARGO_CRATE_NAME": "la_arena",
|
|
||||||
"CARGO_PKG_LICENSE_FILE": "",
|
|
||||||
"CARGO_PKG_HOMEPAGE": "",
|
|
||||||
"CARGO_PKG_DESCRIPTION": "",
|
|
||||||
"CARGO_PKG_NAME": "la-arena",
|
|
||||||
"CARGO_PKG_VERSION_PATCH": "0",
|
|
||||||
"CARGO": "cargo",
|
|
||||||
"CARGO_PKG_REPOSITORY": "",
|
|
||||||
"CARGO_PKG_VERSION_MINOR": "3",
|
|
||||||
"CARGO_PKG_VERSION_PRE": "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
dependencies: [],
|
|
||||||
origin: Library {
|
|
||||||
repo: Some(
|
|
||||||
"https://github.com/rust-lang/rust-analyzer/tree/master/lib/la-arena",
|
|
||||||
),
|
|
||||||
name: "la-arena",
|
|
||||||
},
|
|
||||||
is_proc_macro: false,
|
|
||||||
target_layout: Err(
|
|
||||||
"target_data_layout not loaded",
|
|
||||||
),
|
|
||||||
channel: None,
|
|
||||||
},
|
|
||||||
2: CrateData {
|
|
||||||
root_file_id: FileId(
|
|
||||||
3,
|
|
||||||
),
|
|
||||||
edition: Edition2018,
|
|
||||||
version: Some(
|
|
||||||
"2.5.0",
|
|
||||||
),
|
|
||||||
display_name: Some(
|
|
||||||
CrateDisplayName {
|
|
||||||
crate_name: CrateName(
|
|
||||||
"memchr",
|
|
||||||
),
|
|
||||||
canonical_name: "memchr",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
cfg_options: CfgOptions(
|
|
||||||
[
|
|
||||||
"debug_assertions",
|
|
||||||
"feature=default",
|
|
||||||
"feature=std",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
potential_cfg_options: Some(
|
|
||||||
CfgOptions(
|
|
||||||
[
|
|
||||||
"debug_assertions",
|
|
||||||
"feature=compiler_builtins",
|
|
||||||
"feature=core",
|
|
||||||
"feature=default",
|
|
||||||
"feature=libc",
|
|
||||||
"feature=rustc-dep-of-std",
|
|
||||||
"feature=std",
|
|
||||||
"feature=use_std",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
env: Env {
|
|
||||||
entries: {
|
|
||||||
"CARGO_PKG_LICENSE": "",
|
|
||||||
"CARGO_PKG_VERSION_MAJOR": "2",
|
|
||||||
"CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/memchr-2.5.0",
|
|
||||||
"CARGO_PKG_VERSION": "2.5.0",
|
|
||||||
"CARGO_PKG_AUTHORS": "",
|
|
||||||
"CARGO_CRATE_NAME": "memchr",
|
|
||||||
"CARGO_PKG_LICENSE_FILE": "",
|
|
||||||
"CARGO_PKG_HOMEPAGE": "",
|
|
||||||
"CARGO_PKG_DESCRIPTION": "",
|
|
||||||
"CARGO_PKG_NAME": "memchr",
|
|
||||||
"CARGO_PKG_VERSION_PATCH": "0",
|
|
||||||
"CARGO": "cargo",
|
|
||||||
"CARGO_PKG_REPOSITORY": "",
|
|
||||||
"CARGO_PKG_VERSION_MINOR": "5",
|
|
||||||
"CARGO_PKG_VERSION_PRE": "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
dependencies: [],
|
|
||||||
origin: Library {
|
|
||||||
repo: Some(
|
|
||||||
"https://github.com/BurntSushi/memchr",
|
|
||||||
),
|
|
||||||
name: "memchr",
|
|
||||||
},
|
|
||||||
is_proc_macro: false,
|
|
||||||
target_layout: Err(
|
|
||||||
"target_data_layout not loaded",
|
|
||||||
),
|
|
||||||
channel: None,
|
|
||||||
},
|
|
||||||
3: CrateData {
|
|
||||||
root_file_id: FileId(
|
|
||||||
4,
|
|
||||||
),
|
|
||||||
edition: Edition2021,
|
|
||||||
version: Some(
|
|
||||||
"0.1.0",
|
|
||||||
),
|
|
||||||
display_name: Some(
|
|
||||||
CrateDisplayName {
|
|
||||||
crate_name: CrateName(
|
|
||||||
"ra_playground",
|
|
||||||
),
|
|
||||||
canonical_name: "ra-playground",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
cfg_options: CfgOptions(
|
|
||||||
[
|
|
||||||
"debug_assertions",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
potential_cfg_options: None,
|
|
||||||
env: Env {
|
|
||||||
entries: {
|
|
||||||
"CARGO_PKG_LICENSE": "",
|
|
||||||
"CARGO_PKG_VERSION_MAJOR": "0",
|
|
||||||
"CARGO_MANIFEST_DIR": "$ROOT$ra-playground",
|
|
||||||
"CARGO_PKG_VERSION": "0.1.0",
|
|
||||||
"CARGO_PKG_AUTHORS": "",
|
|
||||||
"CARGO_CRATE_NAME": "ra_playground",
|
|
||||||
"CARGO_PKG_LICENSE_FILE": "",
|
|
||||||
"CARGO_PKG_HOMEPAGE": "",
|
|
||||||
"CARGO_PKG_DESCRIPTION": "",
|
|
||||||
"CARGO_PKG_NAME": "ra-playground",
|
|
||||||
"CARGO_PKG_VERSION_PATCH": "0",
|
|
||||||
"CARGO": "cargo",
|
|
||||||
"CARGO_PKG_REPOSITORY": "",
|
|
||||||
"CARGO_PKG_VERSION_MINOR": "1",
|
|
||||||
"CARGO_PKG_VERSION_PRE": "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
dependencies: [
|
|
||||||
Dependency {
|
|
||||||
crate_id: Idx::<CrateData>(1),
|
|
||||||
name: CrateName(
|
|
||||||
"la_arena",
|
|
||||||
),
|
|
||||||
prelude: true,
|
|
||||||
},
|
|
||||||
Dependency {
|
|
||||||
crate_id: Idx::<CrateData>(7),
|
|
||||||
name: CrateName(
|
|
||||||
"ra_playground",
|
|
||||||
),
|
|
||||||
prelude: true,
|
|
||||||
},
|
|
||||||
Dependency {
|
|
||||||
crate_id: Idx::<CrateData>(5),
|
|
||||||
name: CrateName(
|
|
||||||
"regex",
|
|
||||||
),
|
|
||||||
prelude: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
origin: Local {
|
|
||||||
repo: None,
|
|
||||||
name: Some(
|
|
||||||
"ra-playground",
|
|
||||||
),
|
|
||||||
},
|
|
||||||
is_proc_macro: false,
|
|
||||||
target_layout: Err(
|
|
||||||
"target_data_layout not loaded",
|
|
||||||
),
|
|
||||||
channel: None,
|
|
||||||
},
|
|
||||||
4: CrateData {
|
|
||||||
root_file_id: FileId(
|
|
||||||
5,
|
|
||||||
),
|
|
||||||
edition: Edition2021,
|
|
||||||
version: Some(
|
|
||||||
"0.1.0",
|
|
||||||
),
|
|
||||||
display_name: Some(
|
|
||||||
CrateDisplayName {
|
|
||||||
crate_name: CrateName(
|
|
||||||
"ra_playground",
|
|
||||||
),
|
|
||||||
canonical_name: "ra-playground",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
cfg_options: CfgOptions(
|
|
||||||
[
|
|
||||||
"debug_assertions",
|
|
||||||
"test",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
potential_cfg_options: None,
|
|
||||||
env: Env {
|
|
||||||
entries: {
|
|
||||||
"CARGO_PKG_LICENSE": "",
|
|
||||||
"CARGO_PKG_VERSION_MAJOR": "0",
|
|
||||||
"CARGO_MANIFEST_DIR": "$ROOT$ra-playground",
|
|
||||||
"CARGO_PKG_VERSION": "0.1.0",
|
|
||||||
"CARGO_PKG_AUTHORS": "",
|
|
||||||
"CARGO_CRATE_NAME": "ra_playground",
|
|
||||||
"CARGO_PKG_LICENSE_FILE": "",
|
|
||||||
"CARGO_PKG_HOMEPAGE": "",
|
|
||||||
"CARGO_PKG_DESCRIPTION": "",
|
|
||||||
"CARGO_PKG_NAME": "ra-playground",
|
|
||||||
"CARGO_PKG_VERSION_PATCH": "0",
|
|
||||||
"CARGO": "cargo",
|
|
||||||
"CARGO_PKG_REPOSITORY": "",
|
|
||||||
"CARGO_PKG_VERSION_MINOR": "1",
|
|
||||||
"CARGO_PKG_VERSION_PRE": "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
dependencies: [
|
|
||||||
Dependency {
|
|
||||||
crate_id: Idx::<CrateData>(3),
|
|
||||||
name: CrateName(
|
|
||||||
"ra_playground",
|
|
||||||
),
|
|
||||||
prelude: true,
|
|
||||||
},
|
|
||||||
Dependency {
|
|
||||||
crate_id: Idx::<CrateData>(1),
|
|
||||||
name: CrateName(
|
|
||||||
"la_arena",
|
|
||||||
),
|
|
||||||
prelude: true,
|
|
||||||
},
|
|
||||||
Dependency {
|
|
||||||
crate_id: Idx::<CrateData>(7),
|
|
||||||
name: CrateName(
|
|
||||||
"ra_playground",
|
|
||||||
),
|
|
||||||
prelude: true,
|
|
||||||
},
|
|
||||||
Dependency {
|
|
||||||
crate_id: Idx::<CrateData>(5),
|
|
||||||
name: CrateName(
|
|
||||||
"regex",
|
|
||||||
),
|
|
||||||
prelude: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
origin: Local {
|
|
||||||
repo: None,
|
|
||||||
name: Some(
|
|
||||||
"ra-playground",
|
|
||||||
),
|
|
||||||
},
|
|
||||||
is_proc_macro: false,
|
|
||||||
target_layout: Err(
|
|
||||||
"target_data_layout not loaded",
|
|
||||||
),
|
|
||||||
channel: None,
|
|
||||||
},
|
|
||||||
5: CrateData {
|
|
||||||
root_file_id: FileId(
|
|
||||||
6,
|
|
||||||
),
|
|
||||||
edition: Edition2018,
|
|
||||||
version: Some(
|
|
||||||
"1.7.3",
|
|
||||||
),
|
|
||||||
display_name: Some(
|
|
||||||
CrateDisplayName {
|
|
||||||
crate_name: CrateName(
|
|
||||||
"regex",
|
|
||||||
),
|
|
||||||
canonical_name: "regex",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
cfg_options: CfgOptions(
|
|
||||||
[
|
|
||||||
"debug_assertions",
|
|
||||||
"feature=aho-corasick",
|
|
||||||
"feature=default",
|
|
||||||
"feature=memchr",
|
|
||||||
"feature=perf",
|
|
||||||
"feature=perf-cache",
|
|
||||||
"feature=perf-dfa",
|
|
||||||
"feature=perf-inline",
|
|
||||||
"feature=perf-literal",
|
|
||||||
"feature=std",
|
|
||||||
"feature=unicode",
|
|
||||||
"feature=unicode-age",
|
|
||||||
"feature=unicode-bool",
|
|
||||||
"feature=unicode-case",
|
|
||||||
"feature=unicode-gencat",
|
|
||||||
"feature=unicode-perl",
|
|
||||||
"feature=unicode-script",
|
|
||||||
"feature=unicode-segment",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
potential_cfg_options: Some(
|
|
||||||
CfgOptions(
|
|
||||||
[
|
|
||||||
"debug_assertions",
|
|
||||||
"feature=aho-corasick",
|
|
||||||
"feature=default",
|
|
||||||
"feature=memchr",
|
|
||||||
"feature=pattern",
|
|
||||||
"feature=perf",
|
|
||||||
"feature=perf-cache",
|
|
||||||
"feature=perf-dfa",
|
|
||||||
"feature=perf-inline",
|
|
||||||
"feature=perf-literal",
|
|
||||||
"feature=std",
|
|
||||||
"feature=unicode",
|
|
||||||
"feature=unicode-age",
|
|
||||||
"feature=unicode-bool",
|
|
||||||
"feature=unicode-case",
|
|
||||||
"feature=unicode-gencat",
|
|
||||||
"feature=unicode-perl",
|
|
||||||
"feature=unicode-script",
|
|
||||||
"feature=unicode-segment",
|
|
||||||
"feature=unstable",
|
|
||||||
"feature=use_std",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
env: Env {
|
|
||||||
entries: {
|
|
||||||
"CARGO_PKG_LICENSE": "",
|
|
||||||
"CARGO_PKG_VERSION_MAJOR": "1",
|
|
||||||
"CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3",
|
|
||||||
"CARGO_PKG_VERSION": "1.7.3",
|
|
||||||
"CARGO_PKG_AUTHORS": "",
|
|
||||||
"CARGO_CRATE_NAME": "regex",
|
|
||||||
"CARGO_PKG_LICENSE_FILE": "",
|
|
||||||
"CARGO_PKG_HOMEPAGE": "",
|
|
||||||
"CARGO_PKG_DESCRIPTION": "",
|
|
||||||
"CARGO_PKG_NAME": "regex",
|
|
||||||
"CARGO_PKG_VERSION_PATCH": "3",
|
|
||||||
"CARGO": "cargo",
|
|
||||||
"CARGO_PKG_REPOSITORY": "",
|
|
||||||
"CARGO_PKG_VERSION_MINOR": "7",
|
|
||||||
"CARGO_PKG_VERSION_PRE": "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
dependencies: [
|
|
||||||
Dependency {
|
|
||||||
crate_id: Idx::<CrateData>(0),
|
|
||||||
name: CrateName(
|
|
||||||
"aho_corasick",
|
|
||||||
),
|
|
||||||
prelude: true,
|
|
||||||
},
|
|
||||||
Dependency {
|
|
||||||
crate_id: Idx::<CrateData>(2),
|
|
||||||
name: CrateName(
|
|
||||||
"memchr",
|
|
||||||
),
|
|
||||||
prelude: true,
|
|
||||||
},
|
|
||||||
Dependency {
|
|
||||||
crate_id: Idx::<CrateData>(6),
|
|
||||||
name: CrateName(
|
|
||||||
"regex_syntax",
|
|
||||||
),
|
|
||||||
prelude: true,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
origin: Library {
|
|
||||||
repo: Some(
|
|
||||||
"https://github.com/rust-lang/regex",
|
|
||||||
),
|
|
||||||
name: "regex",
|
|
||||||
},
|
|
||||||
is_proc_macro: false,
|
|
||||||
target_layout: Err(
|
|
||||||
"target_data_layout not loaded",
|
|
||||||
),
|
|
||||||
channel: None,
|
|
||||||
},
|
|
||||||
6: CrateData {
|
|
||||||
root_file_id: FileId(
|
|
||||||
7,
|
|
||||||
),
|
|
||||||
edition: Edition2018,
|
|
||||||
version: Some(
|
|
||||||
"0.6.29",
|
|
||||||
),
|
|
||||||
display_name: Some(
|
|
||||||
CrateDisplayName {
|
|
||||||
crate_name: CrateName(
|
|
||||||
"regex_syntax",
|
|
||||||
),
|
|
||||||
canonical_name: "regex-syntax",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
cfg_options: CfgOptions(
|
|
||||||
[
|
|
||||||
"debug_assertions",
|
|
||||||
"feature=default",
|
|
||||||
"feature=unicode",
|
|
||||||
"feature=unicode-age",
|
|
||||||
"feature=unicode-bool",
|
|
||||||
"feature=unicode-case",
|
|
||||||
"feature=unicode-gencat",
|
|
||||||
"feature=unicode-perl",
|
|
||||||
"feature=unicode-script",
|
|
||||||
"feature=unicode-segment",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
potential_cfg_options: Some(
|
|
||||||
CfgOptions(
|
|
||||||
[
|
|
||||||
"debug_assertions",
|
|
||||||
"feature=default",
|
|
||||||
"feature=unicode",
|
|
||||||
"feature=unicode-age",
|
|
||||||
"feature=unicode-bool",
|
|
||||||
"feature=unicode-case",
|
|
||||||
"feature=unicode-gencat",
|
|
||||||
"feature=unicode-perl",
|
|
||||||
"feature=unicode-script",
|
|
||||||
"feature=unicode-segment",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
),
|
|
||||||
env: Env {
|
|
||||||
entries: {
|
|
||||||
"CARGO_PKG_LICENSE": "",
|
|
||||||
"CARGO_PKG_VERSION_MAJOR": "0",
|
|
||||||
"CARGO_MANIFEST_DIR": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-syntax-0.6.29",
|
|
||||||
"CARGO_PKG_VERSION": "0.6.29",
|
|
||||||
"CARGO_PKG_AUTHORS": "",
|
|
||||||
"CARGO_CRATE_NAME": "regex_syntax",
|
|
||||||
"CARGO_PKG_LICENSE_FILE": "",
|
|
||||||
"CARGO_PKG_HOMEPAGE": "",
|
|
||||||
"CARGO_PKG_DESCRIPTION": "",
|
|
||||||
"CARGO_PKG_NAME": "regex-syntax",
|
|
||||||
"CARGO_PKG_VERSION_PATCH": "29",
|
|
||||||
"CARGO": "cargo",
|
|
||||||
"CARGO_PKG_REPOSITORY": "",
|
|
||||||
"CARGO_PKG_VERSION_MINOR": "6",
|
|
||||||
"CARGO_PKG_VERSION_PRE": "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
dependencies: [],
|
|
||||||
origin: Library {
|
|
||||||
repo: Some(
|
|
||||||
"https://github.com/rust-lang/regex",
|
|
||||||
),
|
|
||||||
name: "regex-syntax",
|
|
||||||
},
|
|
||||||
is_proc_macro: false,
|
|
||||||
target_layout: Err(
|
|
||||||
"target_data_layout not loaded",
|
|
||||||
),
|
|
||||||
channel: None,
|
|
||||||
},
|
|
||||||
7: CrateData {
|
|
||||||
root_file_id: FileId(
|
|
||||||
4,
|
|
||||||
),
|
|
||||||
edition: Edition2021,
|
|
||||||
version: Some(
|
|
||||||
"0.1.0",
|
|
||||||
),
|
|
||||||
display_name: Some(
|
|
||||||
CrateDisplayName {
|
|
||||||
crate_name: CrateName(
|
|
||||||
"ra_playground",
|
|
||||||
),
|
|
||||||
canonical_name: "ra-playground",
|
|
||||||
},
|
|
||||||
),
|
|
||||||
cfg_options: CfgOptions(
|
|
||||||
[
|
|
||||||
"debug_assertions",
|
|
||||||
"test",
|
|
||||||
],
|
|
||||||
),
|
|
||||||
potential_cfg_options: None,
|
|
||||||
env: Env {
|
|
||||||
entries: {
|
|
||||||
"CARGO_PKG_LICENSE": "",
|
|
||||||
"CARGO_PKG_VERSION_MAJOR": "0",
|
|
||||||
"CARGO_MANIFEST_DIR": "$ROOT$ra-playground",
|
|
||||||
"CARGO_PKG_VERSION": "0.1.0",
|
|
||||||
"CARGO_PKG_AUTHORS": "",
|
|
||||||
"CARGO_CRATE_NAME": "ra_playground",
|
|
||||||
"CARGO_PKG_LICENSE_FILE": "",
|
|
||||||
"CARGO_PKG_HOMEPAGE": "",
|
|
||||||
"CARGO_PKG_DESCRIPTION": "",
|
|
||||||
"CARGO_PKG_NAME": "ra-playground",
|
|
||||||
"CARGO_PKG_VERSION_PATCH": "0",
|
|
||||||
"CARGO": "cargo",
|
|
||||||
"CARGO_PKG_REPOSITORY": "",
|
|
||||||
"CARGO_PKG_VERSION_MINOR": "1",
|
|
||||||
"CARGO_PKG_VERSION_PRE": "",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
dependencies: [],
|
|
||||||
origin: Local {
|
|
||||||
repo: None,
|
|
||||||
name: Some(
|
|
||||||
"ra-playground",
|
|
||||||
),
|
|
||||||
},
|
|
||||||
is_proc_macro: false,
|
|
||||||
target_layout: Err(
|
|
||||||
"target_data_layout not loaded",
|
|
||||||
),
|
|
||||||
channel: None,
|
|
||||||
},
|
|
||||||
}
|
|
|
@ -1,985 +0,0 @@
|
||||||
{
|
|
||||||
"packages": [
|
|
||||||
{
|
|
||||||
"name": "aho-corasick",
|
|
||||||
"version": "0.7.20",
|
|
||||||
"id": "aho-corasick 0.7.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"license": "Unlicense OR MIT",
|
|
||||||
"license_file": null,
|
|
||||||
"description": "Fast multiple substring searching.",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"dependencies": [
|
|
||||||
{
|
|
||||||
"name": "memchr",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"req": "^2.4.0",
|
|
||||||
"kind": null,
|
|
||||||
"rename": null,
|
|
||||||
"optional": false,
|
|
||||||
"uses_default_features": false,
|
|
||||||
"features": [],
|
|
||||||
"target": null,
|
|
||||||
"registry": null
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"lib"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"lib"
|
|
||||||
],
|
|
||||||
"name": "aho_corasick",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/aho-corasick-0.7.20/src/lib.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": true,
|
|
||||||
"doctest": true,
|
|
||||||
"test": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"features": {
|
|
||||||
"default": [
|
|
||||||
"std"
|
|
||||||
],
|
|
||||||
"std": [
|
|
||||||
"memchr/std"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"manifest_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/aho-corasick-0.7.20/Cargo.toml",
|
|
||||||
"metadata": null,
|
|
||||||
"publish": null,
|
|
||||||
"authors": [
|
|
||||||
"Andrew Gallant <jamslam@gmail.com>"
|
|
||||||
],
|
|
||||||
"categories": [
|
|
||||||
"text-processing"
|
|
||||||
],
|
|
||||||
"keywords": [
|
|
||||||
"string",
|
|
||||||
"search",
|
|
||||||
"text",
|
|
||||||
"aho",
|
|
||||||
"multi"
|
|
||||||
],
|
|
||||||
"readme": "README.md",
|
|
||||||
"repository": "https://github.com/BurntSushi/aho-corasick",
|
|
||||||
"homepage": "https://github.com/BurntSushi/aho-corasick",
|
|
||||||
"documentation": null,
|
|
||||||
"edition": "2018",
|
|
||||||
"links": null,
|
|
||||||
"default_run": null,
|
|
||||||
"rust_version": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "la-arena",
|
|
||||||
"version": "0.3.0",
|
|
||||||
"id": "la-arena 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"license": "MIT OR Apache-2.0",
|
|
||||||
"license_file": null,
|
|
||||||
"description": "Simple index-based arena without deletion.",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"dependencies": [],
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"lib"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"lib"
|
|
||||||
],
|
|
||||||
"name": "la-arena",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/la-arena-0.3.0/src/lib.rs",
|
|
||||||
"edition": "2021",
|
|
||||||
"doc": true,
|
|
||||||
"doctest": true,
|
|
||||||
"test": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"features": {},
|
|
||||||
"manifest_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/la-arena-0.3.0/Cargo.toml",
|
|
||||||
"metadata": null,
|
|
||||||
"publish": null,
|
|
||||||
"authors": [],
|
|
||||||
"categories": [
|
|
||||||
"data-structures",
|
|
||||||
"memory-management",
|
|
||||||
"rust-patterns"
|
|
||||||
],
|
|
||||||
"keywords": [],
|
|
||||||
"readme": null,
|
|
||||||
"repository": "https://github.com/rust-lang/rust-analyzer/tree/master/lib/la-arena",
|
|
||||||
"homepage": null,
|
|
||||||
"documentation": "https://docs.rs/la-arena",
|
|
||||||
"edition": "2021",
|
|
||||||
"links": null,
|
|
||||||
"default_run": null,
|
|
||||||
"rust_version": "1.56"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "memchr",
|
|
||||||
"version": "2.5.0",
|
|
||||||
"id": "memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"license": "Unlicense/MIT",
|
|
||||||
"license_file": null,
|
|
||||||
"description": "Safe interface to memchr.",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"dependencies": [
|
|
||||||
{
|
|
||||||
"name": "compiler_builtins",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"req": "^0.1.2",
|
|
||||||
"kind": null,
|
|
||||||
"rename": null,
|
|
||||||
"optional": true,
|
|
||||||
"uses_default_features": true,
|
|
||||||
"features": [],
|
|
||||||
"target": null,
|
|
||||||
"registry": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "rustc-std-workspace-core",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"req": "^1.0.0",
|
|
||||||
"kind": null,
|
|
||||||
"rename": "core",
|
|
||||||
"optional": true,
|
|
||||||
"uses_default_features": true,
|
|
||||||
"features": [],
|
|
||||||
"target": null,
|
|
||||||
"registry": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "libc",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"req": "^0.2.18",
|
|
||||||
"kind": null,
|
|
||||||
"rename": null,
|
|
||||||
"optional": true,
|
|
||||||
"uses_default_features": false,
|
|
||||||
"features": [],
|
|
||||||
"target": null,
|
|
||||||
"registry": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "quickcheck",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"req": "^1.0.3",
|
|
||||||
"kind": "dev",
|
|
||||||
"rename": null,
|
|
||||||
"optional": false,
|
|
||||||
"uses_default_features": false,
|
|
||||||
"features": [],
|
|
||||||
"target": null,
|
|
||||||
"registry": null
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"lib"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"lib"
|
|
||||||
],
|
|
||||||
"name": "memchr",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/memchr-2.5.0/src/lib.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": true,
|
|
||||||
"doctest": true,
|
|
||||||
"test": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"custom-build"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "build-script-build",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/memchr-2.5.0/build.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"features": {
|
|
||||||
"compiler_builtins": [
|
|
||||||
"dep:compiler_builtins"
|
|
||||||
],
|
|
||||||
"core": [
|
|
||||||
"dep:core"
|
|
||||||
],
|
|
||||||
"default": [
|
|
||||||
"std"
|
|
||||||
],
|
|
||||||
"libc": [
|
|
||||||
"dep:libc"
|
|
||||||
],
|
|
||||||
"rustc-dep-of-std": [
|
|
||||||
"core",
|
|
||||||
"compiler_builtins"
|
|
||||||
],
|
|
||||||
"std": [],
|
|
||||||
"use_std": [
|
|
||||||
"std"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"manifest_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/memchr-2.5.0/Cargo.toml",
|
|
||||||
"metadata": null,
|
|
||||||
"publish": null,
|
|
||||||
"authors": [
|
|
||||||
"Andrew Gallant <jamslam@gmail.com>",
|
|
||||||
"bluss"
|
|
||||||
],
|
|
||||||
"categories": [],
|
|
||||||
"keywords": [
|
|
||||||
"memchr",
|
|
||||||
"char",
|
|
||||||
"scan",
|
|
||||||
"strchr",
|
|
||||||
"string"
|
|
||||||
],
|
|
||||||
"readme": "README.md",
|
|
||||||
"repository": "https://github.com/BurntSushi/memchr",
|
|
||||||
"homepage": "https://github.com/BurntSushi/memchr",
|
|
||||||
"documentation": "https://docs.rs/memchr/",
|
|
||||||
"edition": "2018",
|
|
||||||
"links": null,
|
|
||||||
"default_run": null,
|
|
||||||
"rust_version": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ra-playground",
|
|
||||||
"version": "0.1.0",
|
|
||||||
"id": "ra-playground 0.1.0 (path+file:///$ROOT$ra-playground)",
|
|
||||||
"license": null,
|
|
||||||
"license_file": null,
|
|
||||||
"description": null,
|
|
||||||
"source": null,
|
|
||||||
"dependencies": [
|
|
||||||
{
|
|
||||||
"name": "la-arena",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"req": "*",
|
|
||||||
"kind": null,
|
|
||||||
"rename": null,
|
|
||||||
"optional": false,
|
|
||||||
"uses_default_features": true,
|
|
||||||
"features": [],
|
|
||||||
"target": null,
|
|
||||||
"registry": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ra-playground",
|
|
||||||
"source": null,
|
|
||||||
"req": "*",
|
|
||||||
"kind": "dev",
|
|
||||||
"rename": null,
|
|
||||||
"optional": false,
|
|
||||||
"uses_default_features": true,
|
|
||||||
"features": [],
|
|
||||||
"target": null,
|
|
||||||
"registry": null,
|
|
||||||
"path": "$ROOT$ra-playground"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "regex",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"req": "*",
|
|
||||||
"kind": "dev",
|
|
||||||
"rename": null,
|
|
||||||
"optional": false,
|
|
||||||
"uses_default_features": true,
|
|
||||||
"features": [],
|
|
||||||
"target": null,
|
|
||||||
"registry": null
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"lib"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"lib"
|
|
||||||
],
|
|
||||||
"name": "ra-playground",
|
|
||||||
"src_path": "$ROOT$ra-playground/src/lib.rs",
|
|
||||||
"edition": "2021",
|
|
||||||
"doc": true,
|
|
||||||
"doctest": true,
|
|
||||||
"test": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "ra-playground",
|
|
||||||
"src_path": "$ROOT$ra-playground/src/main.rs",
|
|
||||||
"edition": "2021",
|
|
||||||
"doc": true,
|
|
||||||
"doctest": false,
|
|
||||||
"test": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"features": {},
|
|
||||||
"manifest_path": "$ROOT$ra-playground/Cargo.toml",
|
|
||||||
"metadata": null,
|
|
||||||
"publish": null,
|
|
||||||
"authors": [],
|
|
||||||
"categories": [],
|
|
||||||
"keywords": [],
|
|
||||||
"readme": null,
|
|
||||||
"repository": null,
|
|
||||||
"homepage": null,
|
|
||||||
"documentation": null,
|
|
||||||
"edition": "2021",
|
|
||||||
"links": null,
|
|
||||||
"default_run": null,
|
|
||||||
"rust_version": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "regex",
|
|
||||||
"version": "1.7.3",
|
|
||||||
"id": "regex 1.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"license": "MIT OR Apache-2.0",
|
|
||||||
"license_file": null,
|
|
||||||
"description": "An implementation of regular expressions for Rust. This implementation uses\nfinite automata and guarantees linear time matching on all inputs.\n",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"dependencies": [
|
|
||||||
{
|
|
||||||
"name": "aho-corasick",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"req": "^0.7.18",
|
|
||||||
"kind": null,
|
|
||||||
"rename": null,
|
|
||||||
"optional": true,
|
|
||||||
"uses_default_features": true,
|
|
||||||
"features": [],
|
|
||||||
"target": null,
|
|
||||||
"registry": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "memchr",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"req": "^2.4.0",
|
|
||||||
"kind": null,
|
|
||||||
"rename": null,
|
|
||||||
"optional": true,
|
|
||||||
"uses_default_features": true,
|
|
||||||
"features": [],
|
|
||||||
"target": null,
|
|
||||||
"registry": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "regex-syntax",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"req": "^0.6.29",
|
|
||||||
"kind": null,
|
|
||||||
"rename": null,
|
|
||||||
"optional": false,
|
|
||||||
"uses_default_features": false,
|
|
||||||
"features": [],
|
|
||||||
"target": null,
|
|
||||||
"registry": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "lazy_static",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"req": "^1",
|
|
||||||
"kind": "dev",
|
|
||||||
"rename": null,
|
|
||||||
"optional": false,
|
|
||||||
"uses_default_features": true,
|
|
||||||
"features": [],
|
|
||||||
"target": null,
|
|
||||||
"registry": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "quickcheck",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"req": "^1.0.3",
|
|
||||||
"kind": "dev",
|
|
||||||
"rename": null,
|
|
||||||
"optional": false,
|
|
||||||
"uses_default_features": false,
|
|
||||||
"features": [],
|
|
||||||
"target": null,
|
|
||||||
"registry": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "rand",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"req": "^0.8.3",
|
|
||||||
"kind": "dev",
|
|
||||||
"rename": null,
|
|
||||||
"optional": false,
|
|
||||||
"uses_default_features": false,
|
|
||||||
"features": [
|
|
||||||
"getrandom",
|
|
||||||
"small_rng"
|
|
||||||
],
|
|
||||||
"target": null,
|
|
||||||
"registry": null
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"lib"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"lib"
|
|
||||||
],
|
|
||||||
"name": "regex",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/src/lib.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": true,
|
|
||||||
"doctest": false,
|
|
||||||
"test": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"example"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "shootout-regex-dna-bytes",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/examples/shootout-regex-dna-bytes.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"example"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "shootout-regex-dna-cheat",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/examples/shootout-regex-dna-cheat.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"example"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "shootout-regex-dna-replace",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/examples/shootout-regex-dna-replace.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"example"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "shootout-regex-dna-single-cheat",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/examples/shootout-regex-dna-single-cheat.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"example"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "shootout-regex-dna-single",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/examples/shootout-regex-dna-single.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"example"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "shootout-regex-dna",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/examples/shootout-regex-dna.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"test"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "default",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_default.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"test"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "default-bytes",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_default_bytes.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"test"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "nfa",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_nfa.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"test"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "nfa-utf8bytes",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_nfa_utf8bytes.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"test"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "nfa-bytes",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_nfa_bytes.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"test"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "backtrack",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_backtrack.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"test"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "backtrack-utf8bytes",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_backtrack_utf8bytes.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"test"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "backtrack-bytes",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_backtrack_bytes.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"test"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "crates-regex",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/tests/test_crates_regex.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"features": {
|
|
||||||
"aho-corasick": [
|
|
||||||
"dep:aho-corasick"
|
|
||||||
],
|
|
||||||
"default": [
|
|
||||||
"std",
|
|
||||||
"perf",
|
|
||||||
"unicode",
|
|
||||||
"regex-syntax/default"
|
|
||||||
],
|
|
||||||
"memchr": [
|
|
||||||
"dep:memchr"
|
|
||||||
],
|
|
||||||
"pattern": [],
|
|
||||||
"perf": [
|
|
||||||
"perf-cache",
|
|
||||||
"perf-dfa",
|
|
||||||
"perf-inline",
|
|
||||||
"perf-literal"
|
|
||||||
],
|
|
||||||
"perf-cache": [],
|
|
||||||
"perf-dfa": [],
|
|
||||||
"perf-inline": [],
|
|
||||||
"perf-literal": [
|
|
||||||
"aho-corasick",
|
|
||||||
"memchr"
|
|
||||||
],
|
|
||||||
"std": [],
|
|
||||||
"unicode": [
|
|
||||||
"unicode-age",
|
|
||||||
"unicode-bool",
|
|
||||||
"unicode-case",
|
|
||||||
"unicode-gencat",
|
|
||||||
"unicode-perl",
|
|
||||||
"unicode-script",
|
|
||||||
"unicode-segment",
|
|
||||||
"regex-syntax/unicode"
|
|
||||||
],
|
|
||||||
"unicode-age": [
|
|
||||||
"regex-syntax/unicode-age"
|
|
||||||
],
|
|
||||||
"unicode-bool": [
|
|
||||||
"regex-syntax/unicode-bool"
|
|
||||||
],
|
|
||||||
"unicode-case": [
|
|
||||||
"regex-syntax/unicode-case"
|
|
||||||
],
|
|
||||||
"unicode-gencat": [
|
|
||||||
"regex-syntax/unicode-gencat"
|
|
||||||
],
|
|
||||||
"unicode-perl": [
|
|
||||||
"regex-syntax/unicode-perl"
|
|
||||||
],
|
|
||||||
"unicode-script": [
|
|
||||||
"regex-syntax/unicode-script"
|
|
||||||
],
|
|
||||||
"unicode-segment": [
|
|
||||||
"regex-syntax/unicode-segment"
|
|
||||||
],
|
|
||||||
"unstable": [
|
|
||||||
"pattern"
|
|
||||||
],
|
|
||||||
"use_std": [
|
|
||||||
"std"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"manifest_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-1.7.3/Cargo.toml",
|
|
||||||
"metadata": null,
|
|
||||||
"publish": null,
|
|
||||||
"authors": [
|
|
||||||
"The Rust Project Developers"
|
|
||||||
],
|
|
||||||
"categories": [
|
|
||||||
"text-processing"
|
|
||||||
],
|
|
||||||
"keywords": [],
|
|
||||||
"readme": "README.md",
|
|
||||||
"repository": "https://github.com/rust-lang/regex",
|
|
||||||
"homepage": "https://github.com/rust-lang/regex",
|
|
||||||
"documentation": "https://docs.rs/regex",
|
|
||||||
"edition": "2018",
|
|
||||||
"links": null,
|
|
||||||
"default_run": null,
|
|
||||||
"rust_version": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "regex-syntax",
|
|
||||||
"version": "0.6.29",
|
|
||||||
"id": "regex-syntax 0.6.29 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"license": "MIT OR Apache-2.0",
|
|
||||||
"license_file": null,
|
|
||||||
"description": "A regular expression parser.",
|
|
||||||
"source": "registry+https://github.com/rust-lang/crates.io-index",
|
|
||||||
"dependencies": [],
|
|
||||||
"targets": [
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"lib"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"lib"
|
|
||||||
],
|
|
||||||
"name": "regex-syntax",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-syntax-0.6.29/src/lib.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": true,
|
|
||||||
"doctest": true,
|
|
||||||
"test": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kind": [
|
|
||||||
"bench"
|
|
||||||
],
|
|
||||||
"crate_types": [
|
|
||||||
"bin"
|
|
||||||
],
|
|
||||||
"name": "bench",
|
|
||||||
"src_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-syntax-0.6.29/benches/bench.rs",
|
|
||||||
"edition": "2018",
|
|
||||||
"doc": false,
|
|
||||||
"doctest": false,
|
|
||||||
"test": false
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"features": {
|
|
||||||
"default": [
|
|
||||||
"unicode"
|
|
||||||
],
|
|
||||||
"unicode": [
|
|
||||||
"unicode-age",
|
|
||||||
"unicode-bool",
|
|
||||||
"unicode-case",
|
|
||||||
"unicode-gencat",
|
|
||||||
"unicode-perl",
|
|
||||||
"unicode-script",
|
|
||||||
"unicode-segment"
|
|
||||||
],
|
|
||||||
"unicode-age": [],
|
|
||||||
"unicode-bool": [],
|
|
||||||
"unicode-case": [],
|
|
||||||
"unicode-gencat": [],
|
|
||||||
"unicode-perl": [],
|
|
||||||
"unicode-script": [],
|
|
||||||
"unicode-segment": []
|
|
||||||
},
|
|
||||||
"manifest_path": "$ROOT$.cargo/registry/src/github.com-1ecc6299db9ec823/regex-syntax-0.6.29/Cargo.toml",
|
|
||||||
"metadata": null,
|
|
||||||
"publish": null,
|
|
||||||
"authors": [
|
|
||||||
"The Rust Project Developers"
|
|
||||||
],
|
|
||||||
"categories": [],
|
|
||||||
"keywords": [],
|
|
||||||
"readme": "README.md",
|
|
||||||
"repository": "https://github.com/rust-lang/regex",
|
|
||||||
"homepage": "https://github.com/rust-lang/regex",
|
|
||||||
"documentation": "https://docs.rs/regex-syntax",
|
|
||||||
"edition": "2018",
|
|
||||||
"links": null,
|
|
||||||
"default_run": null,
|
|
||||||
"rust_version": null
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"workspace_members": [
|
|
||||||
"ra-playground 0.1.0 (path+file:///$ROOT$ra-playground)"
|
|
||||||
],
|
|
||||||
"resolve": {
|
|
||||||
"nodes": [
|
|
||||||
{
|
|
||||||
"id": "aho-corasick 0.7.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"dependencies": [
|
|
||||||
"memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)"
|
|
||||||
],
|
|
||||||
"deps": [
|
|
||||||
{
|
|
||||||
"name": "memchr",
|
|
||||||
"pkg": "memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"dep_kinds": [
|
|
||||||
{
|
|
||||||
"kind": null,
|
|
||||||
"target": null
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"features": [
|
|
||||||
"default",
|
|
||||||
"std"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "la-arena 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"dependencies": [],
|
|
||||||
"deps": [],
|
|
||||||
"features": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"dependencies": [],
|
|
||||||
"deps": [],
|
|
||||||
"features": [
|
|
||||||
"default",
|
|
||||||
"std"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "ra-playground 0.1.0 (path+file:///$ROOT$ra-playground)",
|
|
||||||
"dependencies": [
|
|
||||||
"la-arena 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"ra-playground 0.1.0 (path+file:///$ROOT$ra-playground)",
|
|
||||||
"regex 1.7.3 (registry+https://github.com/rust-lang/crates.io-index)"
|
|
||||||
],
|
|
||||||
"deps": [
|
|
||||||
{
|
|
||||||
"name": "la_arena",
|
|
||||||
"pkg": "la-arena 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"dep_kinds": [
|
|
||||||
{
|
|
||||||
"kind": null,
|
|
||||||
"target": null
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "ra_playground",
|
|
||||||
"pkg": "ra-playground 0.1.0 (path+file:///$ROOT$ra-playground)",
|
|
||||||
"dep_kinds": [
|
|
||||||
{
|
|
||||||
"kind": "dev",
|
|
||||||
"target": null
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "regex",
|
|
||||||
"pkg": "regex 1.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"dep_kinds": [
|
|
||||||
{
|
|
||||||
"kind": "dev",
|
|
||||||
"target": null
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"features": []
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "regex 1.7.3 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"dependencies": [
|
|
||||||
"aho-corasick 0.7.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"regex-syntax 0.6.29 (registry+https://github.com/rust-lang/crates.io-index)"
|
|
||||||
],
|
|
||||||
"deps": [
|
|
||||||
{
|
|
||||||
"name": "aho_corasick",
|
|
||||||
"pkg": "aho-corasick 0.7.20 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"dep_kinds": [
|
|
||||||
{
|
|
||||||
"kind": null,
|
|
||||||
"target": null
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "memchr",
|
|
||||||
"pkg": "memchr 2.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"dep_kinds": [
|
|
||||||
{
|
|
||||||
"kind": null,
|
|
||||||
"target": null
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "regex_syntax",
|
|
||||||
"pkg": "regex-syntax 0.6.29 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"dep_kinds": [
|
|
||||||
{
|
|
||||||
"kind": null,
|
|
||||||
"target": null
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"features": [
|
|
||||||
"aho-corasick",
|
|
||||||
"default",
|
|
||||||
"memchr",
|
|
||||||
"perf",
|
|
||||||
"perf-cache",
|
|
||||||
"perf-dfa",
|
|
||||||
"perf-inline",
|
|
||||||
"perf-literal",
|
|
||||||
"std",
|
|
||||||
"unicode",
|
|
||||||
"unicode-age",
|
|
||||||
"unicode-bool",
|
|
||||||
"unicode-case",
|
|
||||||
"unicode-gencat",
|
|
||||||
"unicode-perl",
|
|
||||||
"unicode-script",
|
|
||||||
"unicode-segment"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "regex-syntax 0.6.29 (registry+https://github.com/rust-lang/crates.io-index)",
|
|
||||||
"dependencies": [],
|
|
||||||
"deps": [],
|
|
||||||
"features": [
|
|
||||||
"default",
|
|
||||||
"unicode",
|
|
||||||
"unicode-age",
|
|
||||||
"unicode-bool",
|
|
||||||
"unicode-case",
|
|
||||||
"unicode-gencat",
|
|
||||||
"unicode-perl",
|
|
||||||
"unicode-script",
|
|
||||||
"unicode-segment"
|
|
||||||
]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"root": "ra-playground 0.1.0 (path+file:///$ROOT$ra-playground)"
|
|
||||||
},
|
|
||||||
"target_directory": "$ROOT$ra-playground/target",
|
|
||||||
"version": 1,
|
|
||||||
"workspace_root": "$ROOT$ra-playground",
|
|
||||||
"metadata": null
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue