Решение на Логически изрази от Иван Стойнев
Резултати
- 0 точки от тестове
- 0 бонус точки
- 0 точки общо
- 0 успешни тест(а)
- 0 неуспешни тест(а)
Код
#[derive(Debug, PartialEq, Eq)]
pub enum MyParseError {
UnexpectedExpression,
UnexpectedUnaryOperator,
UnexpectedBinaryOperator,
UnmatchedParenthesis,
ParsingIncomplete,
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum MyExpr {
Symbol(char),
Neg(Box<MyExpr>),
Conjunction(Vec<MyExpr>),
Disjunction(Vec<MyExpr>),
}
/// A parser for a simple expression without parentheses.
pub struct BasicExprParser {
expr_stack: Vec<MyExpr>,
}
impl BasicExprParser {
pub fn new() -> Self {
BasicExprParser { expr_stack: vec![] }
}
/// Accepts a symbol/atom.
pub fn accept_symbol(&mut self, ch: char) -> Result<(), MyParseError> {
if let Some(last_expr) = self.expr_stack.last() {
match last_expr {
MyExpr::Conjunction(_) | MyExpr::Disjunction(_) => {
return Err(MyParseError::UnexpectedExpression);
}
_ => {}
}
}
self.expr_stack.push(MyExpr::Symbol(ch));
Ok(())
}
/// Accepts an operator character.
pub fn accept_operator(&mut self, op_char: char) -> Result<(), MyParseError> {
// Ensure valid sequence
if let Some(last_expr) = self.expr_stack.last() {
match last_expr {
MyExpr::Conjunction(_) | MyExpr::Disjunction(_) => match op_char {
'&' | '|' => return Err(MyParseError::UnexpectedBinaryOperator),
'!' => return Err(MyParseError::UnexpectedUnaryOperator),
_ => unreachable!("Invalid operator"),
},
_ => {}
}
} else if op_char == '!' {
return Err(MyParseError::UnexpectedUnaryOperator);
}
match op_char {
'&' => {
let all_exprs = self.expr_stack.drain(..).collect::<Vec<_>>();
self.expr_stack.push(MyExpr::Conjunction(all_exprs));
}
'|' => {
let all_exprs = self.expr_stack.drain(..).collect::<Vec<_>>();
self.expr_stack.push(MyExpr::Disjunction(all_exprs));
}
'!' => {
let top_expr = self.expr_stack.pop().ok_or(MyParseError::UnexpectedUnaryOperator)?;
self.expr_stack.push(MyExpr::Neg(Box::new(top_expr)));
}
_ => unreachable!("Invalid operator"),
}
Ok(())
}
/// Completes parsing and returns the final expression.
pub fn finalize(self) -> Result<MyExpr, MyParseError> {
if self.expr_stack.len() == 1 {
Ok(self.expr_stack.into_iter().next().unwrap())
} else {
Err(MyParseError::ParsingIncomplete)
}
}
}
/// A parser that handles parentheses as well.
pub struct FullExprParser {
storage: Vec<MyExpr>,
open_parens: i32,
}
impl FullExprParser {
pub fn new() -> Self {
FullExprParser {
storage: vec![],
open_parens: 0,
}
}
/// Accepts a symbol/atom.
pub fn accept_symbol(&mut self, ch: char) -> Result<(), MyParseError> {
if let Some(last_expr) = self.storage.last() {
match last_expr {
MyExpr::Conjunction(_) | MyExpr::Disjunction(_) => {
return Err(MyParseError::UnexpectedExpression);
}
_ => {}
}
}
self.storage.push(MyExpr::Symbol(ch));
Ok(())
}
/// Accepts an operator character.
pub fn accept_operator(&mut self, op_char: char) -> Result<(), MyParseError> {
// Ensure valid sequence
if let Some(last_expr) = self.storage.last() {
match last_expr {
MyExpr::Conjunction(_) | MyExpr::Disjunction(_) => match op_char {
'&' | '|' => return Err(MyParseError::UnexpectedBinaryOperator),
'!' => return Err(MyParseError::UnexpectedUnaryOperator),
_ => unreachable!("Invalid operator"),
},
_ => {}
}
} else if op_char == '!' {
return Err(MyParseError::UnexpectedUnaryOperator);
}
match op_char {
'&' => {
let collected = self.storage.drain(..).collect::<Vec<_>>();
self.storage.push(MyExpr::Conjunction(collected));
}
'|' => {
let collected = self.storage.drain(..).collect::<Vec<_>>();
self.storage.push(MyExpr::Disjunction(collected));
}
'!' => {
let popped = self.storage.pop().ok_or(MyParseError::UnexpectedUnaryOperator)?;
self.storage.push(MyExpr::Neg(Box::new(popped)));
}
_ => unreachable!("Invalid operator"),
}
Ok(())
}
/// Accepts an opening parenthesis.
pub fn push_open_paren(&mut self) -> Result<(), MyParseError> {
self.open_parens += 1;
Ok(())
}
/// Accepts a closing parenthesis.
pub fn push_close_paren(&mut self) -> Result<(), MyParseError> {
if self.open_parens == 0 {
return Err(MyParseError::UnmatchedParenthesis);
}
self.open_parens -= 1;
Ok(())
}
/// Finalizes parsing and returns the resulting expression.
pub fn finalize(self) -> Result<MyExpr, MyParseError> {
if self.open_parens > 0 {
Err(MyParseError::UnmatchedParenthesis)
} else if self.storage.len() == 1 {
Ok(self.storage.into_iter().next().unwrap())
} else {
Err(MyParseError::ParsingIncomplete)
}
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum BoolValue {
TrueVal,
FalseVal,
Deferred(MyExpr),
}
/// Evaluates a given expression against 'truthy' and 'falsy' sets.
pub fn evaluate(expr: &MyExpr, truthy: &[char], falsy: &[char]) -> BoolValue {
match expr {
MyExpr::Symbol(sym) => {
if truthy.contains(sym) {
BoolValue::TrueVal
} else if falsy.contains(sym) {
BoolValue::FalseVal
} else {
BoolValue::Deferred(expr.clone())
}
}
MyExpr::Neg(inner_expr) => {
let outcome = evaluate(inner_expr, truthy, falsy);
match outcome {
BoolValue::TrueVal => BoolValue::FalseVal,
BoolValue::FalseVal => BoolValue::TrueVal,
BoolValue::Deferred(deferred_expr) => {
BoolValue::Deferred(MyExpr::Neg(Box::new(deferred_expr)))
}
}
}
MyExpr::Conjunction(expr_list) => {
for sub_expr in expr_list {
if evaluate(sub_expr, truthy, falsy) == BoolValue::FalseVal {
return BoolValue::FalseVal;
}
}
BoolValue::TrueVal
}
MyExpr::Disjunction(expr_list) => {
for sub_expr in expr_list {
if evaluate(sub_expr, truthy, falsy) == BoolValue::TrueVal {
return BoolValue::TrueVal;
}
}
BoolValue::FalseVal
}
}
}
Лог от изпълнението
Compiling solution v0.1.0 (/tmp/d20241224-258381-17i74il/solution) error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:372:58 | 372 | assert_eq!(eval(&expr!(atom('A')), &['A'], &[]), Value::True); | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:373:58 | 373 | assert_eq!(eval(&expr!(atom('A')), &[], &['A']), Value::False); | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:375:66 | 375 | assert_eq!(eval(&expr!(not(atom('B'))), &['A'], &['B']), Value::True); | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:376:66 | 376 | assert_eq!(eval(&expr!(not(atom('B'))), &['B'], &['A']), Value::False); | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:378:79 | 378 | assert_eq!(eval(&expr!(and(atom('A'), atom('B'))), &['A', 'B'], &[]), Value::True); | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:379:77 | 379 | assert_eq!(eval(&expr!(and(atom('A'), atom('B'))), &['A'], &['B']), Value::False); | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:380:76 | 380 | assert_eq!(eval(&expr!(or(atom('A'), atom('B'))), &['A'], &['B']), Value::True); | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:381:78 | 381 | assert_eq!(eval(&expr!(or(atom('A'), atom('B'))), &[], &['A', 'B']), Value::False); | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:390:13 | 390 | Value::False | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:394:13 | 394 | Value::True | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:398:13 | 398 | Value::False | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:402:13 | 402 | Value::True | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:422:13 | 422 | Value::False | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:427:13 | 427 | Value::True | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:440:13 | 440 | Value::False | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:445:13 | 445 | Value::True | ^^^^^ use of undeclared type `Value` error[E0412]: cannot find type `SimpleExprParser` in this scope --> tests/solution_test.rs:44:29 | 44 | fn feed_simple(parser: &mut SimpleExprParser, text: &str) -> Result<(), ParseError> { | ^^^^^^^^^^^^^^^^ help: a struct with a similar name exists: `FullExprParser` | ::: /tmp/d20241224-258381-17i74il/solution/src/lib.rs:88:1 | 88 | pub struct FullExprParser { | ------------------------- similarly named struct `FullExprParser` defined here error[E0412]: cannot find type `ParseError` in this scope --> tests/solution_test.rs:44:73 | 44 | fn feed_simple(parser: &mut SimpleExprParser, text: &str) -> Result<(), ParseError> { | ^^^^^^^^^^ | ::: /tmp/d20241224-258381-17i74il/solution/src/lib.rs:2:1 | 2 | pub enum MyParseError { | --------------------- similarly named enum `MyParseError` defined here | help: an enum with a similar name exists | 44 | fn feed_simple(parser: &mut SimpleExprParser, text: &str) -> Result<(), MyParseError> { | ~~~~~~~~~~~~ help: consider importing this type alias | 2 | use std::string::ParseError; | error[E0412]: cannot find type `ExprParser` in this scope --> tests/solution_test.rs:58:27 | 58 | fn feed_full(parser: &mut ExprParser, text: &str) -> Result<(), ParseError> { | ^^^^^^^^^^ not found in this scope error[E0412]: cannot find type `ParseError` in this scope --> tests/solution_test.rs:58:65 | 58 | fn feed_full(parser: &mut ExprParser, text: &str) -> Result<(), ParseError> { | ^^^^^^^^^^ | ::: /tmp/d20241224-258381-17i74il/solution/src/lib.rs:2:1 | 2 | pub enum MyParseError { | --------------------- similarly named enum `MyParseError` defined here | help: an enum with a similar name exists | 58 | fn feed_full(parser: &mut ExprParser, text: &str) -> Result<(), MyParseError> { | ~~~~~~~~~~~~ help: consider importing this type alias | 2 | use std::string::ParseError; | warning: unused import: `solution::*` --> tests/solution_test.rs:2:7 | 2 | use solution::*; | ^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:75:26 | 75 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 78 | assert_eq!(parser.finish().unwrap(), expr!(atom('A'))); | ---------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:85:26 | 85 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 88 | assert_eq!(parser.finish().unwrap(), expr!(and(atom('A'), atom('B')))); | -------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 88 | assert_eq!(parser.finish().unwrap(), expr!(and(atom('A'), atom('B')))); | -------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:90:26 | 90 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 92 | assert_eq!(parser.finish().unwrap(), expr!(or(atom('A'), atom('B')))); | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 92 | assert_eq!(parser.finish().unwrap(), expr!(or(atom('A'), atom('B')))); | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:99:26 | 99 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 101 | assert_eq!(parser.finish().unwrap(), expr!(not(atom('B')))); | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 101 | assert_eq!(parser.finish().unwrap(), expr!(not(atom('B')))); | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:108:26 | 108 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 110 | assert_eq!(parser.finish().unwrap(), expr!(and(atom('A'), not(atom('B'))))); | ------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 110 | assert_eq!(parser.finish().unwrap(), expr!(and(atom('A'), not(atom('B'))))); | ------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 110 | assert_eq!(parser.finish().unwrap(), expr!(and(atom('A'), not(atom('B'))))); | ------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:112:26 | 112 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 114 | assert_eq!(parser.finish().unwrap(), expr!(or(not(atom('A')), atom('B')))); | ------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 114 | assert_eq!(parser.finish().unwrap(), expr!(or(not(atom('A')), atom('B')))); | ------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 114 | assert_eq!(parser.finish().unwrap(), expr!(or(not(atom('A')), atom('B')))); | ------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:116:26 | 116 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 118 | assert_eq!(parser.finish().unwrap(), expr!(and(not(atom('A')), not(atom('B'))))); | ------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 118 | assert_eq!(parser.finish().unwrap(), expr!(and(not(atom('A')), not(atom('B'))))); | ------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 118 | assert_eq!(parser.finish().unwrap(), expr!(and(not(atom('A')), not(atom('B'))))); | ------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:125:26 | 125 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 127 | assert_eq!(parser.finish().unwrap(), expr!(and(atom('A'), atom('B'), atom('C')))); | ------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 127 | assert_eq!(parser.finish().unwrap(), expr!(and(atom('A'), atom('B'), atom('C')))); | ------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:129:26 | 129 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 133 | expr!(or(atom('X'), atom('Y'), atom('Z'), atom('W'))) | ----------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 133 | expr!(or(atom('X'), atom('Y'), atom('Z'), atom('W'))) | ----------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:141:26 | 141 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 143 | assert_eq!(parser.finish().unwrap(), expr!(not(not(not(atom('B')))))); | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 143 | assert_eq!(parser.finish().unwrap(), expr!(not(not(not(atom('B')))))); | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:145:26 | 145 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 147 | assert_eq!(parser.finish().unwrap(), expr!(or(atom('A'), not(not(atom('B')))))); | ----------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 147 | assert_eq!(parser.finish().unwrap(), expr!(or(atom('A'), not(not(atom('B')))))); | ----------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 147 | assert_eq!(parser.finish().unwrap(), expr!(or(atom('A'), not(not(atom('B')))))); | ----------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:149:26 | 149 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 151 | assert_eq!(parser.finish().unwrap(), expr!(or(not(not(atom('A'))), atom('B')))); | ----------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 151 | assert_eq!(parser.finish().unwrap(), expr!(or(not(not(atom('A'))), atom('B')))); | ----------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 151 | assert_eq!(parser.finish().unwrap(), expr!(or(not(not(atom('A'))), atom('B')))); | ----------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:158:26 | 158 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 162 | expr!(and(or(and(atom('A'), atom('B')), atom('C')), atom('D'))) | --------------------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 162 | expr!(and(or(and(atom('A'), atom('B')), atom('C')), atom('D'))) | --------------------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 162 | expr!(and(or(and(atom('A'), atom('B')), atom('C')), atom('D'))) | --------------------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:165:26 | 165 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 169 | expr!(or(and(or(atom('A'), atom('B')), atom('C')), atom('D'))) | -------------------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 169 | expr!(or(and(or(atom('A'), atom('B')), atom('C')), atom('D'))) | -------------------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 169 | expr!(or(and(or(atom('A'), atom('B')), atom('C')), atom('D'))) | -------------------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:177:26 | 177 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 179 | assert_eq!(parser.finish().unwrap(), expr!(atom('A'))); | ---------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:181:26 | 181 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 183 | assert_eq!(parser.finish().unwrap(), expr!(and(atom('A'), atom('B')))); | -------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 183 | assert_eq!(parser.finish().unwrap(), expr!(and(atom('A'), atom('B')))); | -------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:185:26 | 185 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 187 | assert_eq!(parser.finish().unwrap(), expr!(or(atom('A'), atom('B')))); | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 187 | assert_eq!(parser.finish().unwrap(), expr!(or(atom('A'), atom('B')))); | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:189:26 | 189 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 191 | assert_eq!(parser.finish().unwrap(), expr!(not(atom('A')))); | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 191 | assert_eq!(parser.finish().unwrap(), expr!(not(atom('A')))); | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:198:26 | 198 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 202 | expr!(or(atom('X'), and(atom('A'), atom('B')))) | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 202 | expr!(or(atom('X'), and(atom('A'), atom('B')))) | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 202 | expr!(or(atom('X'), and(atom('A'), atom('B')))) | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:205:26 | 205 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 209 | expr!(and(or(atom('A'), atom('B')), atom('X'))) | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 209 | expr!(and(or(atom('A'), atom('B')), atom('X'))) | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 209 | expr!(and(or(atom('A'), atom('B')), atom('X'))) | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:217:26 | 217 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 221 | expr!(and(atom('X'), not(or(atom('A'), atom('B'))))) | ---------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 221 | expr!(and(atom('X'), not(or(atom('A'), atom('B'))))) | ---------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 221 | expr!(and(atom('X'), not(or(atom('A'), atom('B'))))) | ---------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 221 | expr!(and(atom('X'), not(or(atom('A'), atom('B'))))) | ---------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:224:26 | 224 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 228 | expr!(or(not(or(atom('A'), atom('B'))), atom('X'))) | --------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 228 | expr!(or(not(or(atom('A'), atom('B'))), atom('X'))) | --------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 228 | expr!(or(not(or(atom('A'), atom('B'))), atom('X'))) | --------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:236:26 | 236 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 240 | / expr!(or( 241 | | atom('X'), 242 | | and(atom('A'), atom('B')), 243 | | and(atom('C'), atom('D')), 244 | | atom('Y') 245 | | )) | |______________- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 240 | / expr!(or( 241 | | atom('X'), 242 | | and(atom('A'), atom('B')), 243 | | and(atom('C'), atom('D')), 244 | | atom('Y') 245 | | )) | |______________- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 240 | / expr!(or( 241 | | atom('X'), 242 | | and(atom('A'), atom('B')), 243 | | and(atom('C'), atom('D')), 244 | | atom('Y') 245 | | )) | |______________- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:253:26 | 253 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 257 | expr!(not(and(atom('A'), not(and(atom('B'), not(and(atom('C'), atom('D')))))))) | ------------------------------------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 257 | expr!(not(and(atom('A'), not(and(atom('B'), not(and(atom('C'), atom('D')))))))) | ------------------------------------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 257 | expr!(not(and(atom('A'), not(and(atom('B'), not(and(atom('C'), atom('D')))))))) | ------------------------------------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:266:26 | 266 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:269:26 | 269 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:272:26 | 272 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:276:26 | 276 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:280:26 | 280 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:285:26 | 285 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:289:26 | 289 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:293:26 | 293 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:297:26 | 297 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:306:26 | 306 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:309:26 | 309 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:313:26 | 313 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `SimpleExprParser` --> tests/solution_test.rs:317:26 | 317 | let mut parser = SimpleExprParser::new(); | ^^^^^^^^^^^^^^^^ | | | use of undeclared type `SimpleExprParser` | help: a struct with a similar name exists: `FullExprParser` error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:326:26 | 326 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:329:26 | 329 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:333:26 | 333 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:339:26 | 339 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:344:26 | 344 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:348:26 | 348 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:353:26 | 353 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `ExprParser` --> tests/solution_test.rs:360:26 | 360 | let mut parser = ExprParser::new(); | ^^^^^^^^^^ use of undeclared type `ExprParser` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 372 | assert_eq!(eval(&expr!(atom('A')), &['A'], &[]), Value::True); | ---------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:372:20 | 372 | assert_eq!(eval(&expr!(atom('A')), &['A'], &[]), Value::True); | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 373 | assert_eq!(eval(&expr!(atom('A')), &[], &['A']), Value::False); | ---------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:373:20 | 373 | assert_eq!(eval(&expr!(atom('A')), &[], &['A']), Value::False); | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 375 | assert_eq!(eval(&expr!(not(atom('B'))), &['A'], &['B']), Value::True); | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 375 | assert_eq!(eval(&expr!(not(atom('B'))), &['A'], &['B']), Value::True); | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:375:20 | 375 | assert_eq!(eval(&expr!(not(atom('B'))), &['A'], &['B']), Value::True); | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 376 | assert_eq!(eval(&expr!(not(atom('B'))), &['B'], &['A']), Value::False); | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 376 | assert_eq!(eval(&expr!(not(atom('B'))), &['B'], &['A']), Value::False); | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:376:20 | 376 | assert_eq!(eval(&expr!(not(atom('B'))), &['B'], &['A']), Value::False); | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 378 | assert_eq!(eval(&expr!(and(atom('A'), atom('B'))), &['A', 'B'], &[]), Value::True); | -------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 378 | assert_eq!(eval(&expr!(and(atom('A'), atom('B'))), &['A', 'B'], &[]), Value::True); | -------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:378:20 | 378 | assert_eq!(eval(&expr!(and(atom('A'), atom('B'))), &['A', 'B'], &[]), Value::True); | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 379 | assert_eq!(eval(&expr!(and(atom('A'), atom('B'))), &['A'], &['B']), Value::False); | -------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 379 | assert_eq!(eval(&expr!(and(atom('A'), atom('B'))), &['A'], &['B']), Value::False); | -------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:379:20 | 379 | assert_eq!(eval(&expr!(and(atom('A'), atom('B'))), &['A'], &['B']), Value::False); | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 380 | assert_eq!(eval(&expr!(or(atom('A'), atom('B'))), &['A'], &['B']), Value::True); | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 380 | assert_eq!(eval(&expr!(or(atom('A'), atom('B'))), &['A'], &['B']), Value::True); | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:380:20 | 380 | assert_eq!(eval(&expr!(or(atom('A'), atom('B'))), &['A'], &['B']), Value::True); | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 381 | assert_eq!(eval(&expr!(or(atom('A'), atom('B'))), &[], &['A', 'B']), Value::False); | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 381 | assert_eq!(eval(&expr!(or(atom('A'), atom('B'))), &[], &['A', 'B']), Value::False); | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:381:20 | 381 | assert_eq!(eval(&expr!(or(atom('A'), atom('B'))), &[], &['A', 'B']), Value::False); | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 389 | eval(&expr!(not(and(atom('A'), atom('B')))), &['A', 'B'], &[]), | ------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 389 | eval(&expr!(not(and(atom('A'), atom('B')))), &['A', 'B'], &[]), | ------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 389 | eval(&expr!(not(and(atom('A'), atom('B')))), &['A', 'B'], &[]), | ------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:389:13 | 389 | eval(&expr!(not(and(atom('A'), atom('B')))), &['A', 'B'], &[]), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 393 | eval(&expr!(not(and(atom('A'), atom('B')))), &['A'], &['B']), | ------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 393 | eval(&expr!(not(and(atom('A'), atom('B')))), &['A'], &['B']), | ------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 393 | eval(&expr!(not(and(atom('A'), atom('B')))), &['A'], &['B']), | ------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:393:13 | 393 | eval(&expr!(not(and(atom('A'), atom('B')))), &['A'], &['B']), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 397 | eval(&expr!(not(or(atom('A'), atom('B')))), &['A'], &['B']), | ------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 397 | eval(&expr!(not(or(atom('A'), atom('B')))), &['A'], &['B']), | ------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 397 | eval(&expr!(not(or(atom('A'), atom('B')))), &['A'], &['B']), | ------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:397:13 | 397 | eval(&expr!(not(or(atom('A'), atom('B')))), &['A'], &['B']), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 401 | eval(&expr!(not(or(atom('A'), atom('B')))), &[], &['A', 'B']), | ------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 401 | eval(&expr!(not(or(atom('A'), atom('B')))), &[], &['A', 'B']), | ------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 401 | eval(&expr!(not(or(atom('A'), atom('B')))), &[], &['A', 'B']), | ------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:401:13 | 401 | eval(&expr!(not(or(atom('A'), atom('B')))), &[], &['A', 'B']), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 410 | assert_eq!(eval(&expr!(atom('A')), &[], &[]), Value::Expr(expr!(atom('A')))); | ---------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:410:20 | 410 | assert_eq!(eval(&expr!(atom('A')), &[], &[]), Value::Expr(expr!(atom('A')))); | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:410:55 | 410 | assert_eq!(eval(&expr!(atom('A')), &[], &[]), Value::Expr(expr!(atom('A')))); | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 410 | assert_eq!(eval(&expr!(atom('A')), &[], &[]), Value::Expr(expr!(atom('A')))); | ---------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 412 | eval(&expr!(not(atom('B'))), &[], &[]), | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 412 | eval(&expr!(not(atom('B'))), &[], &[]), | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:412:13 | 412 | eval(&expr!(not(atom('B'))), &[], &[]), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:413:13 | 413 | Value::Expr(expr!(not(atom('B')))) | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 413 | Value::Expr(expr!(not(atom('B')))) | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 413 | Value::Expr(expr!(not(atom('B')))) | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 417 | eval(&expr!(and(atom('A'), atom('B'), atom('C'))), &['B'], &[]), | ------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 417 | eval(&expr!(and(atom('A'), atom('B'), atom('C'))), &['B'], &[]), | ------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:417:13 | 417 | eval(&expr!(and(atom('A'), atom('B'), atom('C'))), &['B'], &[]), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:418:13 | 418 | Value::Expr(expr!(and(atom('A'), atom('C')))) | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 418 | Value::Expr(expr!(and(atom('A'), atom('C')))) | -------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 418 | Value::Expr(expr!(and(atom('A'), atom('C')))) | -------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 421 | eval(&expr!(and(atom('A'), atom('B'), atom('C'))), &[], &['B']), | ------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 421 | eval(&expr!(and(atom('A'), atom('B'), atom('C'))), &[], &['B']), | ------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:421:13 | 421 | eval(&expr!(and(atom('A'), atom('B'), atom('C'))), &[], &['B']), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 426 | eval(&expr!(or(atom('A'), atom('B'), atom('C'))), &['B'], &[]), | ------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 426 | eval(&expr!(or(atom('A'), atom('B'), atom('C'))), &['B'], &[]), | ------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:426:13 | 426 | eval(&expr!(or(atom('A'), atom('B'), atom('C'))), &['B'], &[]), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 430 | eval(&expr!(or(atom('A'), atom('B'), atom('C'))), &[], &['B']), | ------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 430 | eval(&expr!(or(atom('A'), atom('B'), atom('C'))), &[], &['B']), | ------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:430:13 | 430 | eval(&expr!(or(atom('A'), atom('B'), atom('C'))), &[], &['B']), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:431:13 | 431 | Value::Expr(expr!(or(atom('A'), atom('C')))) | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 431 | Value::Expr(expr!(or(atom('A'), atom('C')))) | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 431 | Value::Expr(expr!(or(atom('A'), atom('C')))) | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 435 | eval(&expr!(and(atom('A'), not(atom('B')), atom('C'))), &[], &['B']), | ------------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 435 | eval(&expr!(and(atom('A'), not(atom('B')), atom('C'))), &[], &['B']), | ------------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 435 | eval(&expr!(and(atom('A'), not(atom('B')), atom('C'))), &[], &['B']), | ------------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:435:13 | 435 | eval(&expr!(and(atom('A'), not(atom('B')), atom('C'))), &[], &['B']), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:436:13 | 436 | Value::Expr(expr!(and(atom('A'), atom('C')))) | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 436 | Value::Expr(expr!(and(atom('A'), atom('C')))) | -------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 436 | Value::Expr(expr!(and(atom('A'), atom('C')))) | -------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 439 | eval(&expr!(and(atom('A'), not(atom('B')), atom('C'))), &['B'], &[]), | ------------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 439 | eval(&expr!(and(atom('A'), not(atom('B')), atom('C'))), &['B'], &[]), | ------------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 439 | eval(&expr!(and(atom('A'), not(atom('B')), atom('C'))), &['B'], &[]), | ------------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:439:13 | 439 | eval(&expr!(and(atom('A'), not(atom('B')), atom('C'))), &['B'], &[]), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 444 | eval(&expr!(or(atom('A'), not(atom('B')), atom('C'))), &[], &['B']), | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 444 | eval(&expr!(or(atom('A'), not(atom('B')), atom('C'))), &[], &['B']), | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 444 | eval(&expr!(or(atom('A'), not(atom('B')), atom('C'))), &[], &['B']), | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:444:13 | 444 | eval(&expr!(or(atom('A'), not(atom('B')), atom('C'))), &[], &['B']), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 448 | eval(&expr!(or(atom('A'), not(atom('B')), atom('C'))), &['B'], &[]), | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 448 | eval(&expr!(or(atom('A'), not(atom('B')), atom('C'))), &['B'], &[]), | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 448 | eval(&expr!(or(atom('A'), not(atom('B')), atom('C'))), &['B'], &[]), | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:448:13 | 448 | eval(&expr!(or(atom('A'), not(atom('B')), atom('C'))), &['B'], &[]), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:449:13 | 449 | Value::Expr(expr!(or(atom('A'), atom('C')))) | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 449 | Value::Expr(expr!(or(atom('A'), atom('C')))) | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 449 | Value::Expr(expr!(or(atom('A'), atom('C')))) | ------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 458 | eval(&expr!(and(atom('A'), atom('B'), atom('C'))), &['A', 'C'], &[]), | ------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 458 | eval(&expr!(and(atom('A'), atom('B'), atom('C'))), &['A', 'C'], &[]), | ------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:458:13 | 458 | eval(&expr!(and(atom('A'), atom('B'), atom('C'))), &['A', 'C'], &[]), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:459:13 | 459 | Value::Expr(expr!(atom('B'))) | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 459 | Value::Expr(expr!(atom('B'))) | ---------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 462 | eval(&expr!(or(atom('A'), atom('B'), atom('C'))), &[], &['A', 'C']), | ------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 462 | eval(&expr!(or(atom('A'), atom('B'), atom('C'))), &[], &['A', 'C']), | ------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:462:13 | 462 | eval(&expr!(or(atom('A'), atom('B'), atom('C'))), &[], &['A', 'C']), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:463:13 | 463 | Value::Expr(expr!(atom('B'))) | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 463 | Value::Expr(expr!(atom('B'))) | ---------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 467 | eval(&expr!(and(atom('A'), not(atom('B')), atom('C'))), &['A', 'C'], &[]), | ------------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 467 | eval(&expr!(and(atom('A'), not(atom('B')), atom('C'))), &['A', 'C'], &[]), | ------------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 467 | eval(&expr!(and(atom('A'), not(atom('B')), atom('C'))), &['A', 'C'], &[]), | ------------------------------------------------ in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:467:13 | 467 | eval(&expr!(and(atom('A'), not(atom('B')), atom('C'))), &['A', 'C'], &[]), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:468:13 | 468 | Value::Expr(expr!(not(atom('B')))) | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 468 | Value::Expr(expr!(not(atom('B')))) | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 468 | Value::Expr(expr!(not(atom('B')))) | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 471 | eval(&expr!(or(atom('A'), not(atom('B')), atom('C'))), &[], &['A', 'C']), | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 471 | eval(&expr!(or(atom('A'), not(atom('B')), atom('C'))), &[], &['A', 'C']), | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 471 | eval(&expr!(or(atom('A'), not(atom('B')), atom('C'))), &[], &['A', 'C']), | ----------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:471:13 | 471 | eval(&expr!(or(atom('A'), not(atom('B')), atom('C'))), &[], &['A', 'C']), | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:472:13 | 472 | Value::Expr(expr!(not(atom('B')))) | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 472 | Value::Expr(expr!(not(atom('B')))) | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 472 | Value::Expr(expr!(not(atom('B')))) | --------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 482 | &expr!(or( | __________________- 483 | | atom('X'), 484 | | and(atom('A'), atom('B')), 485 | | not(and(atom('C'), atom('D'))), 486 | | atom('Y') 487 | | )), | |__________________- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 482 | &expr!(or( | __________________- 483 | | atom('X'), 484 | | and(atom('A'), atom('B')), 485 | | not(and(atom('C'), atom('D'))), 486 | | atom('Y') 487 | | )), | |__________________- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:36:9 | 36 | Expr::And(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 482 | &expr!(or( | __________________- 483 | | atom('X'), 484 | | and(atom('A'), atom('B')), 485 | | not(and(atom('C'), atom('D'))), 486 | | atom('Y') 487 | | )), | |__________________- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 482 | &expr!(or( | __________________- 483 | | atom('X'), 484 | | and(atom('A'), atom('B')), 485 | | not(and(atom('C'), atom('D'))), 486 | | atom('Y') 487 | | )), | |__________________- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0425]: cannot find function `eval` in this scope --> tests/solution_test.rs:481:13 | 481 | eval( | ^^^^ not found in this scope error[E0433]: failed to resolve: use of undeclared type `Value` --> tests/solution_test.rs:491:13 | 491 | Value::Expr(expr!(or(atom('X'), atom('B'), not(atom('D')), atom('Y')))) | ^^^^^ use of undeclared type `Value` error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:39:9 | 39 | Expr::Or(vec![$( expr!($tag($( $e )*)) ),*]) | ^^^^ use of undeclared type `Expr` ... 491 | Value::Expr(expr!(or(atom('X'), atom('B'), not(atom('D')), atom('Y')))) | ---------------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:30:9 | 30 | Expr::Atom($c) | ^^^^ use of undeclared type `Expr` ... 491 | Value::Expr(expr!(or(atom('X'), atom('B'), not(atom('D')), atom('Y')))) | ---------------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) error[E0433]: failed to resolve: use of undeclared type `Expr` --> tests/solution_test.rs:33:9 | 33 | Expr::Not(Box::new(expr!( $tag($( $e )*) ))) | ^^^^ use of undeclared type `Expr` ... 491 | Value::Expr(expr!(or(atom('X'), atom('B'), not(atom('D')), atom('Y')))) | ---------------------------------------------------------- in this macro invocation | = note: this error originates in the macro `expr` (in Nightly builds, run with -Z macro-backtrace for more info) Some errors have detailed explanations: E0412, E0425, E0433. For more information about an error, try `rustc --explain E0412`. warning: `solution` (test "solution_test") generated 1 warning error: could not compile `solution` due to 340 previous errors; 1 warning emitted