Skip to main content

HandBuilt

Struct HandBuilt 

Source
struct HandBuilt {
    types: HashSet<String>,
    self_type: Option<String>,
    miniextendr_impl: bool,
    locals: HashMap<String, String>,
}
Expand description

The types a file builds ExternalPtrs of itself (MXL121), in any item:

  • the struct in ExternalPtr::new(T { .. }) / ExternalPtr::new(T(..)) (or new_unchecked), with Self inside impl T, or in ExternalPtr::new(x) after let x = T { .. } / let x = T(..) / let x: T = .. in the same function body (the last let x wins);
  • T in an ExternalPtr<T> written as a type or a turbofish (ExternalPtr::<T>::new(..)): return types, let annotations, fields, generic arguments.

A function’s parameters, its receiver among them, are objects the caller has already, and are skipped. So is the impl’s own type in a method of a #[miniextendr] impl block that takes self, as for FileData::returned_types. A value from a call whose type isn’t written (let record = make_record(inner); ExternalPtr::new(record)), a value from another function, and code inside macro calls (vec![..]) stay invisible.

Fields§

§types: HashSet<String>§self_type: Option<String>

The type Self names here: the enclosing impl’s.

§miniextendr_impl: bool

Inside a #[miniextendr] impl block.

§locals: HashMap<String, String>

The type of each let binding of the current function body whose value is a struct literal or whose annotation names it.

Implementations§

Source§

impl HandBuilt

Source

fn in_fn(&mut self, visit_fn: impl FnOnce(&mut Self))

Visit a function with bindings of its own.

Source

fn literal_type(&self, expr: &Expr) -> Option<String>

The type a struct literal T { .. } or tuple-struct call T(..) builds.

Trait Implementations§

Source§

impl Default for HandBuilt

Source§

fn default() -> Self

Returns the “default value” for a type. Read more
Source§

impl<'ast> Visit<'ast> for HandBuilt

Source§

fn visit_item_impl(&mut self, item: &'ast ItemImpl)

Source§

fn visit_item_fn(&mut self, item: &'ast ItemFn)

Source§

fn visit_trait_item_fn(&mut self, method: &'ast TraitItemFn)

Source§

fn visit_impl_item_fn(&mut self, method: &'ast ImplItemFn)

Source§

fn visit_local(&mut self, local: &'ast Local)

Source§

fn visit_fn_arg(&mut self, _: &'ast FnArg)

Source§

fn visit_expr_call(&mut self, call: &'ast ExprCall)

Source§

fn visit_path(&mut self, path: &'ast Path)

Source§

fn visit_abi(&mut self, i: &'ast Abi)

Source§

fn visit_angle_bracketed_generic_arguments( &mut self, i: &'ast AngleBracketedGenericArguments, )

Source§

fn visit_arm(&mut self, i: &'ast Arm)

Source§

fn visit_assoc_const(&mut self, i: &'ast AssocConst)

Source§

fn visit_assoc_type(&mut self, i: &'ast AssocType)

Source§

fn visit_attr_style(&mut self, i: &'ast AttrStyle)

Source§

fn visit_attribute(&mut self, i: &'ast Attribute)

Source§

fn visit_bare_fn_arg(&mut self, i: &'ast BareFnArg)

Source§

fn visit_bare_variadic(&mut self, i: &'ast BareVariadic)

Source§

fn visit_bin_op(&mut self, i: &'ast BinOp)

Source§

fn visit_block(&mut self, i: &'ast Block)

Source§

fn visit_bound_lifetimes(&mut self, i: &'ast BoundLifetimes)

Source§

fn visit_captured_param(&mut self, i: &'ast CapturedParam)

Source§

fn visit_const_param(&mut self, i: &'ast ConstParam)

Source§

fn visit_constraint(&mut self, i: &'ast Constraint)

Source§

fn visit_data(&mut self, i: &'ast Data)

Source§

fn visit_data_enum(&mut self, i: &'ast DataEnum)

Source§

fn visit_data_struct(&mut self, i: &'ast DataStruct)

Source§

fn visit_data_union(&mut self, i: &'ast DataUnion)

Source§

fn visit_derive_input(&mut self, i: &'ast DeriveInput)

Source§

fn visit_expr(&mut self, i: &'ast Expr)

Source§

fn visit_expr_array(&mut self, i: &'ast ExprArray)

Source§

fn visit_expr_assign(&mut self, i: &'ast ExprAssign)

Source§

fn visit_expr_async(&mut self, i: &'ast ExprAsync)

Source§

fn visit_expr_await(&mut self, i: &'ast ExprAwait)

Source§

fn visit_expr_binary(&mut self, i: &'ast ExprBinary)

Source§

fn visit_expr_block(&mut self, i: &'ast ExprBlock)

Source§

fn visit_expr_break(&mut self, i: &'ast ExprBreak)

Source§

fn visit_expr_cast(&mut self, i: &'ast ExprCast)

Source§

fn visit_expr_closure(&mut self, i: &'ast ExprClosure)

Source§

fn visit_expr_const(&mut self, i: &'ast ExprConst)

Source§

fn visit_expr_continue(&mut self, i: &'ast ExprContinue)

Source§

fn visit_expr_field(&mut self, i: &'ast ExprField)

Source§

fn visit_expr_for_loop(&mut self, i: &'ast ExprForLoop)

Source§

fn visit_expr_group(&mut self, i: &'ast ExprGroup)

Source§

fn visit_expr_if(&mut self, i: &'ast ExprIf)

Source§

fn visit_expr_index(&mut self, i: &'ast ExprIndex)

Source§

fn visit_expr_infer(&mut self, i: &'ast ExprInfer)

Source§

fn visit_expr_let(&mut self, i: &'ast ExprLet)

Source§

fn visit_expr_lit(&mut self, i: &'ast ExprLit)

Source§

fn visit_expr_loop(&mut self, i: &'ast ExprLoop)

Source§

fn visit_expr_macro(&mut self, i: &'ast ExprMacro)

Source§

fn visit_expr_match(&mut self, i: &'ast ExprMatch)

Source§

fn visit_expr_method_call(&mut self, i: &'ast ExprMethodCall)

Source§

fn visit_expr_paren(&mut self, i: &'ast ExprParen)

Source§

fn visit_expr_path(&mut self, i: &'ast ExprPath)

Source§

fn visit_expr_range(&mut self, i: &'ast ExprRange)

Source§

fn visit_expr_raw_addr(&mut self, i: &'ast ExprRawAddr)

Source§

fn visit_expr_reference(&mut self, i: &'ast ExprReference)

Source§

fn visit_expr_repeat(&mut self, i: &'ast ExprRepeat)

Source§

fn visit_expr_return(&mut self, i: &'ast ExprReturn)

Source§

fn visit_expr_struct(&mut self, i: &'ast ExprStruct)

Source§

fn visit_expr_try(&mut self, i: &'ast ExprTry)

Source§

fn visit_expr_try_block(&mut self, i: &'ast ExprTryBlock)

Source§

fn visit_expr_tuple(&mut self, i: &'ast ExprTuple)

Source§

fn visit_expr_unary(&mut self, i: &'ast ExprUnary)

Source§

fn visit_expr_unsafe(&mut self, i: &'ast ExprUnsafe)

Source§

fn visit_expr_while(&mut self, i: &'ast ExprWhile)

Source§

fn visit_expr_yield(&mut self, i: &'ast ExprYield)

Source§

fn visit_field(&mut self, i: &'ast Field)

Source§

fn visit_field_mutability(&mut self, i: &'ast FieldMutability)

Source§

fn visit_field_pat(&mut self, i: &'ast FieldPat)

Source§

fn visit_field_value(&mut self, i: &'ast FieldValue)

Source§

fn visit_fields(&mut self, i: &'ast Fields)

Source§

fn visit_fields_named(&mut self, i: &'ast FieldsNamed)

Source§

fn visit_fields_unnamed(&mut self, i: &'ast FieldsUnnamed)

Source§

fn visit_file(&mut self, i: &'ast File)

Source§

fn visit_foreign_item(&mut self, i: &'ast ForeignItem)

Source§

fn visit_foreign_item_fn(&mut self, i: &'ast ForeignItemFn)

Source§

fn visit_foreign_item_macro(&mut self, i: &'ast ForeignItemMacro)

Source§

fn visit_foreign_item_static(&mut self, i: &'ast ForeignItemStatic)

Source§

fn visit_foreign_item_type(&mut self, i: &'ast ForeignItemType)

Source§

fn visit_generic_argument(&mut self, i: &'ast GenericArgument)

Source§

fn visit_generic_param(&mut self, i: &'ast GenericParam)

Source§

fn visit_generics(&mut self, i: &'ast Generics)

Source§

fn visit_ident(&mut self, i: &'ast Ident)

Source§

fn visit_impl_item(&mut self, i: &'ast ImplItem)

Source§

fn visit_impl_item_const(&mut self, i: &'ast ImplItemConst)

Source§

fn visit_impl_item_macro(&mut self, i: &'ast ImplItemMacro)

Source§

fn visit_impl_item_type(&mut self, i: &'ast ImplItemType)

Source§

fn visit_impl_restriction(&mut self, i: &'ast ImplRestriction)

Source§

fn visit_index(&mut self, i: &'ast Index)

Source§

fn visit_item(&mut self, i: &'ast Item)

Source§

fn visit_item_const(&mut self, i: &'ast ItemConst)

Source§

fn visit_item_enum(&mut self, i: &'ast ItemEnum)

Source§

fn visit_item_extern_crate(&mut self, i: &'ast ItemExternCrate)

Source§

fn visit_item_foreign_mod(&mut self, i: &'ast ItemForeignMod)

Source§

fn visit_item_macro(&mut self, i: &'ast ItemMacro)

Source§

fn visit_item_mod(&mut self, i: &'ast ItemMod)

Source§

fn visit_item_static(&mut self, i: &'ast ItemStatic)

Source§

fn visit_item_struct(&mut self, i: &'ast ItemStruct)

Source§

fn visit_item_trait(&mut self, i: &'ast ItemTrait)

Source§

fn visit_item_trait_alias(&mut self, i: &'ast ItemTraitAlias)

Source§

fn visit_item_type(&mut self, i: &'ast ItemType)

Source§

fn visit_item_union(&mut self, i: &'ast ItemUnion)

Source§

fn visit_item_use(&mut self, i: &'ast ItemUse)

Source§

fn visit_label(&mut self, i: &'ast Label)

Source§

fn visit_lifetime(&mut self, i: &'ast Lifetime)

Source§

fn visit_lifetime_param(&mut self, i: &'ast LifetimeParam)

Source§

fn visit_lit(&mut self, i: &'ast Lit)

Source§

fn visit_lit_bool(&mut self, i: &'ast LitBool)

Source§

fn visit_lit_byte(&mut self, i: &'ast LitByte)

Source§

fn visit_lit_byte_str(&mut self, i: &'ast LitByteStr)

Source§

fn visit_lit_cstr(&mut self, i: &'ast LitCStr)

Source§

fn visit_lit_char(&mut self, i: &'ast LitChar)

Source§

fn visit_lit_float(&mut self, i: &'ast LitFloat)

Source§

fn visit_lit_int(&mut self, i: &'ast LitInt)

Source§

fn visit_lit_str(&mut self, i: &'ast LitStr)

Source§

fn visit_local_init(&mut self, i: &'ast LocalInit)

Source§

fn visit_macro(&mut self, i: &'ast Macro)

Source§

fn visit_macro_delimiter(&mut self, i: &'ast MacroDelimiter)

Source§

fn visit_member(&mut self, i: &'ast Member)

Source§

fn visit_meta(&mut self, i: &'ast Meta)

Source§

fn visit_meta_list(&mut self, i: &'ast MetaList)

Source§

fn visit_meta_name_value(&mut self, i: &'ast MetaNameValue)

Source§

fn visit_parenthesized_generic_arguments( &mut self, i: &'ast ParenthesizedGenericArguments, )

Source§

fn visit_pat(&mut self, i: &'ast Pat)

Source§

fn visit_pat_ident(&mut self, i: &'ast PatIdent)

Source§

fn visit_pat_or(&mut self, i: &'ast PatOr)

Source§

fn visit_pat_paren(&mut self, i: &'ast PatParen)

Source§

fn visit_pat_reference(&mut self, i: &'ast PatReference)

Source§

fn visit_pat_rest(&mut self, i: &'ast PatRest)

Source§

fn visit_pat_slice(&mut self, i: &'ast PatSlice)

Source§

fn visit_pat_struct(&mut self, i: &'ast PatStruct)

Source§

fn visit_pat_tuple(&mut self, i: &'ast PatTuple)

Source§

fn visit_pat_tuple_struct(&mut self, i: &'ast PatTupleStruct)

Source§

fn visit_pat_type(&mut self, i: &'ast PatType)

Source§

fn visit_pat_wild(&mut self, i: &'ast PatWild)

Source§

fn visit_path_arguments(&mut self, i: &'ast PathArguments)

Source§

fn visit_path_segment(&mut self, i: &'ast PathSegment)

Source§

fn visit_pointer_mutability(&mut self, i: &'ast PointerMutability)

Source§

fn visit_precise_capture(&mut self, i: &'ast PreciseCapture)

Source§

fn visit_predicate_lifetime(&mut self, i: &'ast PredicateLifetime)

Source§

fn visit_predicate_type(&mut self, i: &'ast PredicateType)

Source§

fn visit_qself(&mut self, i: &'ast QSelf)

Source§

fn visit_range_limits(&mut self, i: &'ast RangeLimits)

Source§

fn visit_receiver(&mut self, i: &'ast Receiver)

Source§

fn visit_return_type(&mut self, i: &'ast ReturnType)

Source§

fn visit_signature(&mut self, i: &'ast Signature)

Source§

fn visit_span(&mut self, i: &Span)

Source§

fn visit_static_mutability(&mut self, i: &'ast StaticMutability)

Source§

fn visit_stmt(&mut self, i: &'ast Stmt)

Source§

fn visit_stmt_macro(&mut self, i: &'ast StmtMacro)

Source§

fn visit_token_stream(&mut self, i: &'ast TokenStream)

Source§

fn visit_trait_bound(&mut self, i: &'ast TraitBound)

Source§

fn visit_trait_bound_modifier(&mut self, i: &'ast TraitBoundModifier)

Source§

fn visit_trait_item(&mut self, i: &'ast TraitItem)

Source§

fn visit_trait_item_const(&mut self, i: &'ast TraitItemConst)

Source§

fn visit_trait_item_macro(&mut self, i: &'ast TraitItemMacro)

Source§

fn visit_trait_item_type(&mut self, i: &'ast TraitItemType)

Source§

fn visit_type(&mut self, i: &'ast Type)

Source§

fn visit_type_array(&mut self, i: &'ast TypeArray)

Source§

fn visit_type_bare_fn(&mut self, i: &'ast TypeBareFn)

Source§

fn visit_type_group(&mut self, i: &'ast TypeGroup)

Source§

fn visit_type_impl_trait(&mut self, i: &'ast TypeImplTrait)

Source§

fn visit_type_infer(&mut self, i: &'ast TypeInfer)

Source§

fn visit_type_macro(&mut self, i: &'ast TypeMacro)

Source§

fn visit_type_never(&mut self, i: &'ast TypeNever)

Source§

fn visit_type_param(&mut self, i: &'ast TypeParam)

Source§

fn visit_type_param_bound(&mut self, i: &'ast TypeParamBound)

Source§

fn visit_type_paren(&mut self, i: &'ast TypeParen)

Source§

fn visit_type_path(&mut self, i: &'ast TypePath)

Source§

fn visit_type_ptr(&mut self, i: &'ast TypePtr)

Source§

fn visit_type_reference(&mut self, i: &'ast TypeReference)

Source§

fn visit_type_slice(&mut self, i: &'ast TypeSlice)

Source§

fn visit_type_trait_object(&mut self, i: &'ast TypeTraitObject)

Source§

fn visit_type_tuple(&mut self, i: &'ast TypeTuple)

Source§

fn visit_un_op(&mut self, i: &'ast UnOp)

Source§

fn visit_use_glob(&mut self, i: &'ast UseGlob)

Source§

fn visit_use_group(&mut self, i: &'ast UseGroup)

Source§

fn visit_use_name(&mut self, i: &'ast UseName)

Source§

fn visit_use_path(&mut self, i: &'ast UsePath)

Source§

fn visit_use_rename(&mut self, i: &'ast UseRename)

Source§

fn visit_use_tree(&mut self, i: &'ast UseTree)

Source§

fn visit_variadic(&mut self, i: &'ast Variadic)

Source§

fn visit_variant(&mut self, i: &'ast Variant)

Source§

fn visit_vis_restricted(&mut self, i: &'ast VisRestricted)

Source§

fn visit_visibility(&mut self, i: &'ast Visibility)

Source§

fn visit_where_clause(&mut self, i: &'ast WhereClause)

Source§

fn visit_where_predicate(&mut self, i: &'ast WherePredicate)

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, 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> SizeHint for T
where T: ?Sized,

Source§

default fn lower_bound(&self) -> usize

🔬This is a nightly-only experimental API. (core_io_internals)
Returns a lower bound on the number of elements this container-like item contains. For example, an array [u8; 12] could return any value between 0 and 12 inclusively as a correct implementation. Read more
Source§

default fn upper_bound(&self) -> Option<usize>

🔬This is a nightly-only experimental API. (core_io_internals)
Returns an upper bound on the number of elements this container-like item contains if it can be determined, otherwise None. Read more
Source§

final fn size_hint(&self) -> (usize, Option<usize>)

🔬This is a nightly-only experimental API. (core_io_internals)
Returns an estimate for the number of elements this container like type contains. Read more
Source§

impl<T> SizedTypeProperties for T

Source§

#[doc(hidden)]
const SIZE: usize = _

🔬This is a nightly-only experimental API. (sized_type_properties)
Source§

#[doc(hidden)]
const ALIGN: usize = _

🔬This is a nightly-only experimental API. (sized_type_properties)
Source§

#[doc(hidden)]
const ALIGNMENT: Alignment = _

🔬This is a nightly-only experimental API. (ptr_alignment_type)
Source§

#[doc(hidden)]
const IS_ZST: bool = _

🔬This is a nightly-only experimental API. (sized_type_properties)
true if this type requires no storage. false if its size is greater than zero. Read more
Source§

#[doc(hidden)]
const LAYOUT: Layout = _

🔬This is a nightly-only experimental API. (sized_type_properties)
Source§

#[doc(hidden)]
const MAX_SLICE_LEN: usize = _

🔬This is a nightly-only experimental API. (sized_type_properties)
The largest safe length for a [Self]. Read more
Source§

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

Source§

type Error = !

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

fn try_from(value: U) -> Result<T, !>

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.

Layout§

Note: Most layout information is completely unstable and may even differ between compilations. The only exception is types with certain repr(...) attributes. Please see the Rust Reference's “Type Layout” chapter for details on type layout guarantees.

Size: 128 bytes