pub struct SourceInfo {
pub syntax_version: String,
pub location: String,
pub line_offsets: Vec<i32>,
pub positions: HashMap<i64, i32>,
pub macro_calls: HashMap<i64, Expr>,
}Expand description
Source information collected at parse time.
Fields§
§syntax_version: StringThe syntax version of the source, e.g. cel1.
location: StringThe location name. All position information attached to an expression is relative to this location.
The location could be a file, UI element, or similar. For example,
acme/app/AnvilPolicy.cel.
line_offsets: Vec<i32>Monotonically increasing list of code point offsets where newlines
\n appear.
The line number of a given position is the index i where for a given
id the line_offsets\[i\] < id_positions\[id\] < line_offsets\[i+1\]. The
column may be derivd from id_positions\[id\] - line_offsets\[i\].
positions: HashMap<i64, i32>A map from the parse node id (e.g. Expr.id) to the code point offset
within the source.
macro_calls: HashMap<i64, Expr>A map from the parse node id where a macro replacement was made to the
call Expr that resulted in a macro expansion.
For example, has(value.field) is a function call that is replaced by a
test_only field selection in the AST. Likewise, the call
list.exists(e, e > 10) translates to a comprehension expression. The key
in the map corresponds to the expression id of the expanded macro, and the
value is the call Expr that was replaced.
Trait Implementations§
Source§impl Clone for SourceInfo
impl Clone for SourceInfo
Source§fn clone(&self) -> SourceInfo
fn clone(&self) -> SourceInfo
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SourceInfo
impl Debug for SourceInfo
Source§impl Default for SourceInfo
impl Default for SourceInfo
Source§impl Message for SourceInfo
impl Message for SourceInfo
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self.Source§impl Name for SourceInfo
impl Name for SourceInfo
Source§const NAME: &'static str = "SourceInfo"
const NAME: &'static str = "SourceInfo"
Message.
This name is the same as it appears in the source .proto file, e.g. FooBar.Source§const PACKAGE: &'static str = "google.api.expr.v1alpha1"
const PACKAGE: &'static str = "google.api.expr.v1alpha1"
., e.g. google.protobuf.Source§fn full_name() -> String
fn full_name() -> String
Message.
It’s prefixed with the package name and names of any parent messages,
e.g. google.rpc.BadRequest.FieldViolation.
By default, this is the package name followed by the message name.
Fully-qualified names must be unique within a domain of Type URLs.Source§impl PartialEq for SourceInfo
impl PartialEq for SourceInfo
impl StructuralPartialEq for SourceInfo
Auto Trait Implementations§
impl Freeze for SourceInfo
impl RefUnwindSafe for SourceInfo
impl Send for SourceInfo
impl Sync for SourceInfo
impl Unpin for SourceInfo
impl UnwindSafe for SourceInfo
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request