llmcc_rust/
lib.rs

1mod bind;
2mod collect;
3pub mod descriptor;
4pub mod token;
5
6pub use crate::bind::bind_symbols;
7pub use crate::collect::{
8    apply_symbol_batch, collect_symbols, collect_symbols_batch, CollectedSymbols, CollectionResult,
9    SymbolBatch,
10};
11pub use crate::descriptor::{
12    CallArgument, CallDescriptor, CallTarget, ChainSegment, EnumDescriptor, EnumVariant,
13    EnumVariantField, EnumVariantKind, FnVisibility, FunctionDescriptor, FunctionParameter,
14    StructDescriptor, StructField, StructKind, TypeExpr, VariableDescriptor, VariableKind,
15    VariableScope,
16};
17pub use llmcc_core::{
18    build_llmcc_graph, build_llmcc_ir, print_llmcc_graph, print_llmcc_ir, CompileCtxt,
19    ProjectGraph, ProjectQuery,
20};
21pub use token::LangRust;
22
23use llmcc_core::context::CompileUnit;
24use llmcc_core::lang_def::ParallelSymbolCollect;
25use llmcc_core::symbol::Scope;
26
27impl ParallelSymbolCollect for LangRust {
28    const PARALLEL_SYMBOL_COLLECTION: bool = true;
29    type SymbolBatch = crate::collect::SymbolBatch;
30
31    fn collect_symbol_batch<'tcx>(unit: CompileUnit<'tcx>) -> Self::SymbolBatch {
32        collect_symbols_batch(unit)
33    }
34
35    fn apply_symbol_batch<'tcx>(
36        unit: CompileUnit<'tcx>,
37        globals: &'tcx Scope<'tcx>,
38        batch: Self::SymbolBatch,
39    ) {
40        let _ = apply_symbol_batch(unit, globals, batch);
41    }
42}