pub struct TypeDeclare<Value>(pub Value);Expand description
Declares a type, rendering as type Value; Adds a new line after.
Can be used for multiple purposes:
- Creating a type alias, free-form
- Defining an associated type (use FillOutField)
- Declaring the value of an associated type (use AssignExpr)
Example using traits and associated types:
use async_codegen::common::{Combined, NoOpSeq, SingularSeq, Str};
use async_codegen::context::EmptyContext;
use async_codegen::rust::{AssignExpr, FillOutField, Lifetime, LifetimedRefOf, Parameterized, TraitDef, TraitImpl, TypeDeclare};
use async_codegen::util::InMemoryOutput;
let trait_def = TraitDef {
mods: NoOpSeq,
name: Str("MyTrait"),
type_variables: NoOpSeq,
super_traits: NoOpSeq,
body: TypeDeclare(FillOutField(Parameterized(Str("Special"), SingularSeq(Lifetime("s"))), Str("Clone")))
};
let trait_impl = TraitImpl {
mods: NoOpSeq,
type_variables: NoOpSeq,
the_trait: Str("MyTrait"),
receiver: Str("()"),
where_conds: NoOpSeq,
body: TypeDeclare(AssignExpr(Parameterized(Str("Special"), SingularSeq(Lifetime("s"))), LifetimedRefOf("s", Str("str"))))
};
let string = InMemoryOutput::print_output(EmptyContext, &Combined(trait_def, trait_impl));
assert_eq!(r#"trait MyTrait {
type Special<'s>: Clone;
}
impl MyTrait for () {
type Special<'s> = &'s str;
}
"#, string);Tuple Fields§
§0: ValueTrait Implementations§
Source§impl<Value: Clone> Clone for TypeDeclare<Value>
impl<Value: Clone> Clone for TypeDeclare<Value>
Source§fn clone(&self) -> TypeDeclare<Value>
fn clone(&self) -> TypeDeclare<Value>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<Value: Debug> Debug for TypeDeclare<Value>
impl<Value: Debug> Debug for TypeDeclare<Value>
Auto Trait Implementations§
impl<Value> Freeze for TypeDeclare<Value>where
Value: Freeze,
impl<Value> RefUnwindSafe for TypeDeclare<Value>where
Value: RefUnwindSafe,
impl<Value> Send for TypeDeclare<Value>where
Value: Send,
impl<Value> Sync for TypeDeclare<Value>where
Value: Sync,
impl<Value> Unpin for TypeDeclare<Value>where
Value: Unpin,
impl<Value> UnwindSafe for TypeDeclare<Value>where
Value: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more