. Num , - ( Box). ; : ( ) expr enum ? , , , String, Num? , , , expr !
, - : &Num Box<Num>. , - "" , , .
. generics monomorphized, , , . , , , .
. :
enum Expr<N: Num> {
Numeric(N),
Symbol(String)
}
:
enum Expr<'a> { // '
Numeric(&'a Num + 'a),
Symbol(String)
}
:
enum Expr {
Numeric(Box<Num + 'static>), // '
Symbol(String)
}
, . , , -.
'a
enum Expr<'a> { // '
Numeric(&'a Num + 'a),
Symbol(String)
}
- . , Numeric. &'a Num + 'a - , "- , 'a , , 'a". , -, 'a : &'a, -, : Num + 'a. , , , , -, .
Box . Box<Num + 'static> - "- , , 'static". Box - . , , , , . - , Num + 'a ; 'static lifetime. , , 'static. , , .
, :
&'a SomeTrait + 'a
&'a SomeTrait + 'static
Box<SomeTrait + 'a> // '
Box<SomeTrait + 'static>
, 'a 'b :
&'a SomeTrait + 'b
, 'b , 'a ( - , - ), &'a SomeTrait + 'a.