2024-01-03 13:55:39 +00:00
|
|
|
export interface JsonProject {
|
2023-03-09 20:06:26 +00:00
|
|
|
/// Path to the directory with *source code* of
|
|
|
|
/// sysroot crates.
|
|
|
|
///
|
|
|
|
/// It should point to the directory where std,
|
|
|
|
/// core, and friends can be found:
|
|
|
|
///
|
|
|
|
/// https://github.com/rust-lang/rust/tree/master/library.
|
|
|
|
///
|
|
|
|
/// If provided, rust-analyzer automatically adds
|
|
|
|
/// dependencies on sysroot crates. Conversely,
|
|
|
|
/// if you omit this path, you can specify sysroot
|
|
|
|
/// dependencies yourself and, for example, have
|
|
|
|
/// several different "sysroots" in one graph of
|
|
|
|
/// crates.
|
|
|
|
sysroot_src?: string;
|
|
|
|
/// The set of crates comprising the current
|
|
|
|
/// project. Must include all transitive
|
|
|
|
/// dependencies as well as sysroot crate (libstd,
|
|
|
|
/// libcore and such).
|
|
|
|
crates: Crate[];
|
|
|
|
}
|
|
|
|
|
2024-01-03 13:55:39 +00:00
|
|
|
export interface Crate {
|
2023-03-09 20:06:26 +00:00
|
|
|
/// Optional crate name used for display purposes,
|
|
|
|
/// without affecting semantics. See the `deps`
|
|
|
|
/// key for semantically-significant crate names.
|
|
|
|
display_name?: string;
|
|
|
|
/// Path to the root module of the crate.
|
|
|
|
root_module: string;
|
|
|
|
/// Edition of the crate.
|
|
|
|
edition: "2015" | "2018" | "2021";
|
|
|
|
/// Dependencies
|
|
|
|
deps: Dep[];
|
|
|
|
/// Should this crate be treated as a member of
|
|
|
|
/// current "workspace".
|
|
|
|
///
|
|
|
|
/// By default, inferred from the `root_module`
|
|
|
|
/// (members are the crates which reside inside
|
|
|
|
/// the directory opened in the editor).
|
|
|
|
///
|
|
|
|
/// Set this to `false` for things like standard
|
|
|
|
/// library and 3rd party crates to enable
|
|
|
|
/// performance optimizations (rust-analyzer
|
|
|
|
/// assumes that non-member crates don't change).
|
|
|
|
is_workspace_member?: boolean;
|
|
|
|
/// Optionally specify the (super)set of `.rs`
|
|
|
|
/// files comprising this crate.
|
|
|
|
///
|
|
|
|
/// By default, rust-analyzer assumes that only
|
|
|
|
/// files under `root_module.parent` can belong
|
|
|
|
/// to a crate. `include_dirs` are included
|
|
|
|
/// recursively, unless a subdirectory is in
|
|
|
|
/// `exclude_dirs`.
|
|
|
|
///
|
|
|
|
/// Different crates can share the same `source`.
|
|
|
|
///
|
|
|
|
/// If two crates share an `.rs` file in common,
|
|
|
|
/// they *must* have the same `source`.
|
|
|
|
/// rust-analyzer assumes that files from one
|
|
|
|
/// source can't refer to files in another source.
|
|
|
|
source?: {
|
2023-03-09 20:27:24 +00:00
|
|
|
include_dirs: string[];
|
|
|
|
exclude_dirs: string[];
|
|
|
|
};
|
2023-03-09 20:06:26 +00:00
|
|
|
/// The set of cfgs activated for a given crate, like
|
|
|
|
/// `["unix", "feature=\"foo\"", "feature=\"bar\""]`.
|
|
|
|
cfg: string[];
|
|
|
|
/// Target triple for this Crate.
|
|
|
|
///
|
|
|
|
/// Used when running `rustc --print cfg`
|
|
|
|
/// to get target-specific cfgs.
|
|
|
|
target?: string;
|
|
|
|
/// Environment variables, used for
|
|
|
|
/// the `env!` macro
|
2023-03-09 20:27:24 +00:00
|
|
|
env: { [key: string]: string };
|
2023-03-09 20:06:26 +00:00
|
|
|
|
|
|
|
/// Whether the crate is a proc-macro crate.
|
|
|
|
is_proc_macro: boolean;
|
|
|
|
/// For proc-macro crates, path to compiled
|
|
|
|
/// proc-macro (.so file).
|
|
|
|
proc_macro_dylib_path?: string;
|
|
|
|
}
|
|
|
|
|
2024-01-03 13:55:39 +00:00
|
|
|
export interface Dep {
|
2023-03-09 20:06:26 +00:00
|
|
|
/// Index of a crate in the `crates` array.
|
2023-03-09 20:27:24 +00:00
|
|
|
crate: number;
|
2023-03-09 20:06:26 +00:00
|
|
|
/// Name as should appear in the (implicit)
|
|
|
|
/// `extern crate name` declaration.
|
2023-03-09 20:27:24 +00:00
|
|
|
name: string;
|
|
|
|
}
|