Function summarize_rust_lexical

Source
pub fn summarize_rust_lexical(document: &Document) -> CodeFileSummary
Expand description

Builds a deterministic, line-oriented Rust symbol summary.

Only trimmed lines beginning exactly with use , fn , struct , enum , or trait are recognized, so visibility/modifier prefixes are ignored. Symbols have no parents/signatures/docs and use one-based IDs. One root containment/import edge is emitted per symbol. Calls are textually detected as name( outside the symbol’s own name range, at most once per function, with root ID zero as caller; comments/strings can cause false positives.

§Examples

use ailloli_ui_editor::{code::symbols::summarize_rust_lexical, Document, DocumentId, EditorLanguage, SymbolEdgeKind, SymbolKind};
use ailloli_ui_text::TextBuffer;
let document = Document::new(DocumentId(1), TextBuffer::from_string("struct App;\nfn run() {}\nfn main() { run(); }")) .with_language(EditorLanguage::Rust);
let summary = summarize_rust_lexical(&document);
assert!(summary.symbols.iter().any(|s| s.kind == SymbolKind::Struct && s.name == "App"));
assert!(summary.edges.iter().any(|e| e.kind == SymbolEdgeKind::Calls));