When a metadata parameter is annotated as @infer, RPC macro engine will materialize that parameter by searching
for an implicit value of that parameter's type. @infer is the default strategy assumed for implicit parameters
of metadata classes, so using this annotation explicitly is only needed when you want an implicit search done
for non-implicit parameter. This may be useful if, e.g. you want an inferred parameter to be a case class field.
NOTE: By default, implicit search for @infer parameter does NOT affect the decision about whether some real
method or real parameter matches a metadata parameter. For example, if an implicit for @infer parameter cannot be
found, you will only know about it *after* the metadata materializing macro has already been expanded.
This behaviour can be changed with checked annotation.
The @infer annotation may also be used on a parameter of an annotation reified with reifyAnnot
in order to simulate implicit parameter. This is a workaround for the fact that Scala
annotations cannot accept multiple parameter lists. In such situation, infer.value should be used as default
value of "implicit" annotation parameter:
class valueWithCodec[T](value: T, @infer codec: GenCodec[T] = infer.value)
extends scala.annotation.StaticAnnotation
When a metadata parameter is annotated as
@infer
, RPC macro engine will materialize that parameter by searching for an implicit value of that parameter's type.@infer
is the default strategy assumed for implicit parameters of metadata classes, so using this annotation explicitly is only needed when you want an implicit search done for non-implicit parameter. This may be useful if, e.g. you want an inferred parameter to be a case class field.NOTE: By default, implicit search for
@infer
parameter does NOT affect the decision about whether some real method or real parameter matches a metadata parameter. For example, if an implicit for@infer
parameter cannot be found, you will only know about it *after* the metadata materializing macro has already been expanded. This behaviour can be changed with checked annotation.The
@infer
annotation may also be used on a parameter of an annotation reified with reifyAnnot in order to simulate implicit parameter. This is a workaround for the fact that Scala annotations cannot accept multiple parameter lists. In such situation,infer.value
should be used as default value of "implicit" annotation parameter: