Trait arithmetic_typing::arith::TypeArithmetic [−][src]
pub trait TypeArithmetic<Prim: PrimitiveType> { fn process_unary_op(
&self,
substitutions: &mut Substitutions<Prim>,
context: &UnaryOpContext<Prim>,
errors: OpErrors<'_, Prim>
) -> Type<Prim>; fn process_binary_op(
&self,
substitutions: &mut Substitutions<Prim>,
context: &BinaryOpContext<Prim>,
errors: OpErrors<'_, Prim>
) -> Type<Prim>; }
Expand description
Arithmetic allowing to customize primitive types and how unary and binary operations are handled during type inference.
Examples
See crate examples for examples how define custom arithmetics.
Required methods
fn process_unary_op(
&self,
substitutions: &mut Substitutions<Prim>,
context: &UnaryOpContext<Prim>,
errors: OpErrors<'_, Prim>
) -> Type<Prim>
[src]
fn process_unary_op(
&self,
substitutions: &mut Substitutions<Prim>,
context: &UnaryOpContext<Prim>,
errors: OpErrors<'_, Prim>
) -> Type<Prim>
[src]Handles a unary operation.
fn process_binary_op(
&self,
substitutions: &mut Substitutions<Prim>,
context: &BinaryOpContext<Prim>,
errors: OpErrors<'_, Prim>
) -> Type<Prim>
[src]
fn process_binary_op(
&self,
substitutions: &mut Substitutions<Prim>,
context: &BinaryOpContext<Prim>,
errors: OpErrors<'_, Prim>
) -> Type<Prim>
[src]Handles a binary operation.
Implementors
impl TypeArithmetic<Num> for NumArithmetic
[src]
impl TypeArithmetic<Num> for NumArithmetic
[src]fn process_unary_op<'a>(
&self,
substitutions: &mut Substitutions<Num>,
context: &UnaryOpContext<Num>,
errors: OpErrors<'_, Num>
) -> Type<Num>
[src]
&self,
substitutions: &mut Substitutions<Num>,
context: &UnaryOpContext<Num>,
errors: OpErrors<'_, Num>
) -> Type<Num>
fn process_binary_op<'a>(
&self,
substitutions: &mut Substitutions<Num>,
context: &BinaryOpContext<Num>,
errors: OpErrors<'_, Num>
) -> Type<Num>
[src]
&self,
substitutions: &mut Substitutions<Num>,
context: &BinaryOpContext<Num>,
errors: OpErrors<'_, Num>
) -> Type<Num>
impl<Prim: WithBoolean> TypeArithmetic<Prim> for BoolArithmetic
[src]
impl<Prim: WithBoolean> TypeArithmetic<Prim> for BoolArithmetic
[src]fn process_unary_op<'a>(
&self,
substitutions: &mut Substitutions<Prim>,
context: &UnaryOpContext<Prim>,
errors: OpErrors<'_, Prim>
) -> Type<Prim>
[src]
fn process_unary_op<'a>(
&self,
substitutions: &mut Substitutions<Prim>,
context: &UnaryOpContext<Prim>,
errors: OpErrors<'_, Prim>
) -> Type<Prim>
[src]Processes a unary operation.
!
requires a Boolean input and outputs a Boolean.- Other operations fail with
ErrorKind::UnsupportedFeature
.
fn process_binary_op(
&self,
substitutions: &mut Substitutions<Prim>,
context: &BinaryOpContext<Prim>,
errors: OpErrors<'_, Prim>
) -> Type<Prim>
[src]
fn process_binary_op(
&self,
substitutions: &mut Substitutions<Prim>,
context: &BinaryOpContext<Prim>,
errors: OpErrors<'_, Prim>
) -> Type<Prim>
[src]Processes a binary operation.
==
and!=
require LHS and RHS to have the same type (no matter which one). These ops returnBool
.&&
and||
require LHS and RHS to haveBool
type. These ops returnBool
.- Other operations fail with
ErrorKind::UnsupportedFeature
.