pub enum ClauseItem {
Identifier(Identifier),
Variable(Variable),
Expression(Expression),
}
Expand description
Item that can appear in a clause list
Many OpenMP clauses accept lists of items that can be:
- Simple identifiers:
private(x, y, z)
- Variables with array sections:
map(to: arr[0:N])
- Expressions:
if(n > 100)
§Examples
// Simple identifier
let item = ClauseItem::Identifier(Identifier::new("x"));
assert_eq!(item.to_string(), "x");
// Variable with array section
let var = Variable::new("arr");
let item = ClauseItem::Variable(var);
assert_eq!(item.to_string(), "arr");
// Expression
let config = ParserConfig::default();
let expr = Expression::new("n > 100", &config);
let item = ClauseItem::Expression(expr);
assert_eq!(item.to_string(), "n > 100");
§Learning: Enums with Data
Unlike the modifier enums (which are just unit variants), ClauseItem is an enum where each variant contains data:
ⓘ
enum ClauseItem {
Identifier(Identifier), // Contains an Identifier
Variable(Variable), // Contains a Variable
Expression(Expression), // Contains an Expression
}
This is like a tagged union in C, but type-safe.
Variants§
Identifier(Identifier)
Simple identifier (e.g., x
in private(x)
)
Variable(Variable)
Variable with optional array sections (e.g., arr[0:N]
in map(to: arr[0:N])
)
Expression(Expression)
Expression (e.g., n > 100
in if(n > 100)
)
Trait Implementations§
Source§impl Clone for ClauseItem
impl Clone for ClauseItem
Source§fn clone(&self) -> ClauseItem
fn clone(&self) -> ClauseItem
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreSource§impl Debug for ClauseItem
impl Debug for ClauseItem
Source§impl Display for ClauseItem
impl Display for ClauseItem
Source§impl From<Expression> for ClauseItem
impl From<Expression> for ClauseItem
Source§fn from(expr: Expression) -> Self
fn from(expr: Expression) -> Self
Converts to this type from the input type.
Source§impl From<Identifier> for ClauseItem
impl From<Identifier> for ClauseItem
Source§fn from(id: Identifier) -> Self
fn from(id: Identifier) -> Self
Converts to this type from the input type.
Source§impl From<Variable> for ClauseItem
impl From<Variable> for ClauseItem
Source§impl PartialEq for ClauseItem
impl PartialEq for ClauseItem
impl StructuralPartialEq for ClauseItem
Auto Trait Implementations§
impl Freeze for ClauseItem
impl RefUnwindSafe for ClauseItem
impl Send for ClauseItem
impl Sync for ClauseItem
impl Unpin for ClauseItem
impl UnwindSafe for ClauseItem
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
Mutably borrows from an owned value. Read more