pub struct ExpandResult {
pub code: String,
pub types: Option<String>,
pub metadata: Option<String>,
pub diagnostics: Vec<MacroDiagnostic>,
pub source_mapping: Option<SourceMappingResult>,
}Expand description
Result of expanding macros in TypeScript source code.
This is the primary return type for macro expansion operations, containing the expanded code, diagnostics, and source mapping.
§Example
use macroforge_ts::{ExpandResult, MacroDiagnostic};
// Create an ExpandResult programmatically
let result = ExpandResult {
code: "class User {}".to_string(),
types: None,
metadata: None,
diagnostics: vec![],
source_mapping: None,
};
// Check for errors
if result.diagnostics.iter().any(|d| d.level == "error") {
// Handle errors
}Fields§
§code: StringThe expanded TypeScript code with all macros processed.
types: Option<String>Optional TypeScript type declarations for generated methods.
metadata: Option<String>Optional JSON metadata about processed classes.
diagnostics: Vec<MacroDiagnostic>Diagnostics (errors, warnings, info) from the expansion process.
source_mapping: Option<SourceMappingResult>Source mapping for position translation between original and expanded code.
Implementations§
Source§impl ExpandResult
impl ExpandResult
Sourcepub fn unchanged(code: &str) -> Self
pub fn unchanged(code: &str) -> Self
Creates a no-op result with the original code unchanged.
Used for early bailout when no macros need processing, avoiding unnecessary parsing and expansion overhead.
§Arguments
code- The original source code to return unchanged
§Returns
An ExpandResult with:
codeset to the input- All other fields empty/None
- No source mapping (identity mapping implied)
Trait Implementations§
Source§impl Clone for ExpandResult
impl Clone for ExpandResult
Source§fn clone(&self) -> ExpandResult
fn clone(&self) -> ExpandResult
Returns a duplicate of the value. Read more
1.0.0§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl FromNapiValue for ExpandResult
impl FromNapiValue for ExpandResult
Source§unsafe fn from_napi_value(
env: napi_env,
napi_val: napi_value,
) -> Result<ExpandResult>
unsafe fn from_napi_value( env: napi_env, napi_val: napi_value, ) -> Result<ExpandResult>
Safety Read more
fn from_unknown(value: Unknown<'_>) -> Result<Self, Error>
Source§impl ToNapiValue for ExpandResult
impl ToNapiValue for ExpandResult
Source§unsafe fn to_napi_value(env: napi_env, val: ExpandResult) -> Result<napi_value>
unsafe fn to_napi_value(env: napi_env, val: ExpandResult) -> Result<napi_value>
Safety Read more
fn into_unknown(self, env: &Env) -> Result<Unknown<'_>, Error>
Source§impl TypeName for ExpandResult
impl TypeName for ExpandResult
Source§impl ValidateNapiValue for ExpandResult
impl ValidateNapiValue for ExpandResult
Source§unsafe fn validate(
env: *mut napi_env__,
napi_val: *mut napi_value__,
) -> Result<*mut napi_value__, Error>
unsafe fn validate( env: *mut napi_env__, napi_val: *mut napi_value__, ) -> Result<*mut napi_value__, Error>
Safety Read more
Auto Trait Implementations§
impl Freeze for ExpandResult
impl RefUnwindSafe for ExpandResult
impl Send for ExpandResult
impl Sync for ExpandResult
impl Unpin for ExpandResult
impl UnwindSafe for ExpandResult
Blanket Implementations§
§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§unsafe fn clone_to_uninit(&self, dest: *mut u8)
unsafe fn clone_to_uninit(&self, dest: *mut u8)
🔬This is a nightly-only experimental API. (
clone_to_uninit)Source§impl<T> ImplicitClone for Twhere
T: Clone,
impl<T> ImplicitClone for Twhere
T: Clone,
fn clone_quote_var(&self) -> Self
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more