Skip to main content

Compactor

Struct Compactor 

Source
pub struct Compactor { /* private fields */ }
Expand description

AST-aware compactor bound to one language.

Implementations§

Source§

impl Compactor

Source

pub fn new(language: Language) -> Result<Self>

Create a compactor for a given language.

Source

pub fn rust() -> Result<Self>

Convenience for the Rust grammar.

Source

pub fn for_path(path: impl AsRef<Path>) -> Result<Self>

Build a compactor by detecting the language from a path’s extension.

Source

pub fn language(&self) -> Language

Source

pub fn outline(&mut self, source: &str) -> Result<CompactResult>

Produce a structural outline: every signature kept, every function body replaced with a one-line placeholder recording how much was elided.

Source

pub fn compact_to_budget( &mut self, source: &str, max_tokens: usize, ) -> Result<CompactResult>

Return source untouched if it already fits max_tokens; otherwise compact it to an outline (best-effort — a file that is all signatures may still exceed the budget).

Source

pub fn expand(&mut self, source: &str, symbol: &str) -> Result<Vec<String>>

The inverse of compaction: return the full source of every function or method named symbol, bodies included.

This is what makes compaction safe to act on. A caller orients on a skeleton (bodies elided, signatures kept), then — when it needs to edit one specific function whose body it never saw — fetches just that body on demand instead of re-reading the whole file. The skeleton already shows the name above each /* … elided */, so the caller always knows what to ask for.

Names are not unique (several new methods, an overridden render), so every match is returned in source order. An empty result means no such named function exists — the caller should fall back to reading the file.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more