pub struct BinaryTypeCoercer<'a> {
lhs: &'a DataType,
op: &'a Operator,
rhs: &'a DataType,
lhs_spans: Spans,
op_spans: Spans,
rhs_spans: Spans,
}Expand description
Provides type information about a binary expression, coercing different input types into a sensible output type.
Fields§
§lhs: &'a DataType§op: &'a Operator§rhs: &'a DataType§lhs_spans: Spans§op_spans: Spans§rhs_spans: SpansImplementations§
Source§impl<'a> BinaryTypeCoercer<'a>
impl<'a> BinaryTypeCoercer<'a>
Sourcepub fn new(lhs: &'a DataType, op: &'a Operator, rhs: &'a DataType) -> Self
pub fn new(lhs: &'a DataType, op: &'a Operator, rhs: &'a DataType) -> Self
Creates a new BinaryTypeCoercer, for reasoning about the input
and output types of a binary expression.
Sourcepub fn set_lhs_spans(&mut self, spans: Spans)
pub fn set_lhs_spans(&mut self, spans: Spans)
Sets the spans information for the left side of the binary expression, so better diagnostics can be provided in case of errors.
Sourcepub fn set_op_spans(&mut self, spans: Spans)
pub fn set_op_spans(&mut self, spans: Spans)
Sets the spans information for the operator of the binary expression, so better diagnostics can be provided in case of errors.
Sourcepub fn set_rhs_spans(&mut self, spans: Spans)
pub fn set_rhs_spans(&mut self, spans: Spans)
Sets the spans information for the right side of the binary expression, so better diagnostics can be provided in case of errors.
fn span(&self) -> Option<Span>
Sourcefn signature(&'a self) -> Result<Signature>
fn signature(&'a self) -> Result<Signature>
Returns a Signature for applying op to arguments of type lhs and rhs
Sourcefn get_result(&self, lhs: &DataType, rhs: &DataType) -> Result<DataType>
fn get_result(&self, lhs: &DataType, rhs: &DataType) -> Result<DataType>
Returns the result type for arithmetic operations
fn signature_inner( &'a self, lhs: &DataType, rhs: &DataType, ) -> Result<Signature>
Sourcepub fn get_result_type(&'a self) -> Result<DataType>
pub fn get_result_type(&'a self) -> Result<DataType>
Returns the resulting type of a binary expression evaluating the op with the left and right hand types
Sourcepub fn get_input_types(&'a self) -> Result<(DataType, DataType)>
pub fn get_input_types(&'a self) -> Result<(DataType, DataType)>
Returns the coerced input types for a binary expression evaluating the op with the left and right hand types
Auto Trait Implementations§
impl<'a> Freeze for BinaryTypeCoercer<'a>
impl<'a> RefUnwindSafe for BinaryTypeCoercer<'a>
impl<'a> Send for BinaryTypeCoercer<'a>
impl<'a> Sync for BinaryTypeCoercer<'a>
impl<'a> Unpin for BinaryTypeCoercer<'a>
impl<'a> UnwindSafe for BinaryTypeCoercer<'a>
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
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more