Struct syntax_ext::deriving::generic::TraitDef [−][src]
pub struct TraitDef<'a> { pub span: Span, pub attributes: Vec<Attribute>, pub path: Path<'a>, pub additional_bounds: Vec<Ty<'a>>, pub generics: LifetimeBounds<'a>, pub is_unsafe: bool, pub supports_unions: bool, pub methods: Vec<MethodDef<'a>>, pub associated_types: Vec<(Ident, Ty<'a>)>, }
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Fields
span: Span
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
The span for the current #[derive(Foo)] header.
attributes: Vec<Attribute>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
path: Path<'a>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Path of the trait, including any type parameters
additional_bounds: Vec<Ty<'a>>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Additional bounds required of any type parameters of the type, other than the current trait
generics: LifetimeBounds<'a>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Any extra lifetimes and/or bounds, e.g. D: serialize::Decoder
is_unsafe: bool
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Is it an unsafe
trait?
supports_unions: bool
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Can this trait be derived for unions?
methods: Vec<MethodDef<'a>>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
associated_types: Vec<(Ident, Ty<'a>)>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Methods
impl<'a> TraitDef<'a>
[src]
impl<'a> TraitDef<'a>
pub fn expand(
self,
cx: &mut ExtCtxt,
mitem: &MetaItem,
item: &'a Annotatable,
push: &mut FnMut(Annotatable)
)
[src]
pub fn expand(
self,
cx: &mut ExtCtxt,
mitem: &MetaItem,
item: &'a Annotatable,
push: &mut FnMut(Annotatable)
)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
pub fn expand_ext(
self,
cx: &mut ExtCtxt,
mitem: &MetaItem,
item: &'a Annotatable,
push: &mut FnMut(Annotatable),
from_scratch: bool
)
[src]
pub fn expand_ext(
self,
cx: &mut ExtCtxt,
mitem: &MetaItem,
item: &'a Annotatable,
push: &mut FnMut(Annotatable),
from_scratch: bool
)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fn create_derived_impl(
&self,
cx: &mut ExtCtxt,
type_ident: Ident,
generics: &Generics,
field_tys: Vec<P<Ty>>,
methods: Vec<ImplItem>
) -> P<Item>
[src]
fn create_derived_impl(
&self,
cx: &mut ExtCtxt,
type_ident: Ident,
generics: &Generics,
field_tys: Vec<P<Ty>>,
methods: Vec<ImplItem>
) -> P<Item>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Given that we are deriving a trait DerivedTrait
for a type like:
struct Struct<'a, ..., 'z, A, B: DeclaredTrait, C, ..., Z> where C: WhereTrait { a: A, b: B::Item, b1: <B as DeclaredTrait>::Item, c1: <C as WhereTrait>::Item, c2: Option<<C as WhereTrait>::Item>, ... }
create an impl like:
impl<'a, ..., 'z, A, B: DeclaredTrait, C, ... Z> where C: WhereTrait, A: DerivedTrait + B1 + ... + BN, B: DerivedTrait + B1 + ... + BN, C: DerivedTrait + B1 + ... + BN, B::Item: DerivedTrait + B1 + ... + BN, <C as WhereTrait>::Item: DerivedTrait + B1 + ... + BN, ... { ... }
where B1, ..., BN are the bounds given by bounds_paths
.'. Z is a phantom type, and
therefore does not get bound by the derived trait.
fn expand_struct_def(
&self,
cx: &mut ExtCtxt,
struct_def: &'a VariantData,
type_ident: Ident,
generics: &Generics,
from_scratch: bool,
use_temporaries: bool
) -> P<Item>
[src]
fn expand_struct_def(
&self,
cx: &mut ExtCtxt,
struct_def: &'a VariantData,
type_ident: Ident,
generics: &Generics,
from_scratch: bool,
use_temporaries: bool
) -> P<Item>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fn expand_enum_def(
&self,
cx: &mut ExtCtxt,
enum_def: &'a EnumDef,
type_attrs: &[Attribute],
type_ident: Ident,
generics: &Generics,
from_scratch: bool
) -> P<Item>
[src]
fn expand_enum_def(
&self,
cx: &mut ExtCtxt,
enum_def: &'a EnumDef,
type_attrs: &[Attribute],
type_ident: Ident,
generics: &Generics,
from_scratch: bool
) -> P<Item>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
impl<'a> TraitDef<'a>
[src]
impl<'a> TraitDef<'a>
fn summarise_struct(
&self,
cx: &mut ExtCtxt,
struct_def: &VariantData
) -> StaticFields
[src]
fn summarise_struct(
&self,
cx: &mut ExtCtxt,
struct_def: &VariantData
) -> StaticFields
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fn create_subpatterns(
&self,
cx: &mut ExtCtxt,
field_paths: Vec<Ident>,
mutbl: Mutability,
use_temporaries: bool
) -> Vec<P<Pat>>
[src]
fn create_subpatterns(
&self,
cx: &mut ExtCtxt,
field_paths: Vec<Ident>,
mutbl: Mutability,
use_temporaries: bool
) -> Vec<P<Pat>>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fn create_struct_pattern(
&self,
cx: &mut ExtCtxt,
struct_path: Path,
struct_def: &'a VariantData,
prefix: &str,
mutbl: Mutability,
use_temporaries: bool
) -> (P<Pat>, Vec<(Span, Option<Ident>, P<Expr>, &'a [Attribute])>)
[src]
fn create_struct_pattern(
&self,
cx: &mut ExtCtxt,
struct_path: Path,
struct_def: &'a VariantData,
prefix: &str,
mutbl: Mutability,
use_temporaries: bool
) -> (P<Pat>, Vec<(Span, Option<Ident>, P<Expr>, &'a [Attribute])>)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fn create_enum_variant_pattern(
&self,
cx: &mut ExtCtxt,
enum_ident: Ident,
variant: &'a Variant,
prefix: &str,
mutbl: Mutability
) -> (P<Pat>, Vec<(Span, Option<Ident>, P<Expr>, &'a [Attribute])>)
[src]
fn create_enum_variant_pattern(
&self,
cx: &mut ExtCtxt,
enum_ident: Ident,
variant: &'a Variant,
prefix: &str,
mutbl: Mutability
) -> (P<Pat>, Vec<(Span, Option<Ident>, P<Expr>, &'a [Attribute])>)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?