Решение на Логически изрази от Божидар Виденов

Обратно към всички решения

Към профила на Божидар Виденов

Резултати

  • 0 точки от тестове
  • 0 бонус точки
  • 0 точки общо
  • 0 успешни тест(а)
  • 0 неуспешни тест(а)

Код

#[derive(Clone, Debug, PartialEq, Eq)]
pub enum Expression {
Atom(char),
Not(Box<Expression>),
And(Vec<Expression>),
Or(Vec<Expression>),
}
#[derive(Debug, PartialEq, Eq)]
pub enum ParseError {
UnexpectedExpr,
UnexpectedUnaryOp,
UnexpectedBinOp,
UnexpectedParen,
UnexpectedEnd,
}
pub struct SimpleExprParser {
operands: Vec<Expression>,
ops: Vec<char>,
pending_nots: usize,
expect_operand: bool,
}
impl SimpleExprParser {
pub fn new() -> SimpleExprParser {
SimpleExprParser {
operands: Vec::new(),
ops: Vec::new(),
pending_nots: 0,
expect_operand: true,
}
}
pub fn push_atom(&mut self, c: char) -> Result<(), ParseError> {
if !self.expect_operand {
return Err(ParseError::UnexpectedExpr);
}
let mut expr = Expression::Atom(c);
for _ in 0..self.pending_nots {
expr = Expression::Not(Box::new(expr));
}
self.pending_nots = 0;
self.operands.push(expr);
self.expect_operand = false;
Ok(())
}
pub fn push_op(&mut self, op: char) -> Result<(), ParseError> {
match op {
'!' => {
if !self.expect_operand {
return Err(ParseError::UnexpectedUnaryOp);
}
self.pending_nots += 1;
Ok(())
}
'&' | '|' => {
if self.expect_operand {
return Err(ParseError::UnexpectedBinOp);
}
self.ops.push(op);
self.expect_operand = true;
Ok(())
}
_ => panic!("Invalid operator"),
}
}
fn expect_operand_check(&mut self, e: Expression) -> Result<(), ParseError> {
if !self.expect_operand {
return Err(ParseError::UnexpectedExpr);
}
if self.pending_nots > 0 {
let mut expr = e;
for _ in 0..self.pending_nots {
expr = Expression::Not(Box::new(expr));
}
self.pending_nots = 0;
self.operands.push(expr);
} else {
self.operands.push(e);
}
self.expect_operand = false;
Ok(())
}
pub fn finish(self) -> Result<Expression, ParseError> {
if self.expect_operand {
return Err(ParseError::UnexpectedEnd);
}
if self.pending_nots > 0 {
return Err(ParseError::UnexpectedEnd);
}
let mut expr = self.operands[0].clone();
for (i, &op) in self.ops.iter().enumerate() {
let next = self.operands[i + 1].clone();
expr = combine(expr, op, next);
}
Ok(expr)
}
}
fn combine(left: Expression, op: char, right: Expression) -> Expression {
match op {
'&' => {
if let Expression::And(mut v) = left {
v.push(right);
Expression::And(v)
} else {
Expression::And(vec![left, right])
}
}
'|' => {
if let Expression::Or(mut v) = left {
v.push(right);
Expression::Or(v)
} else {
Expression::Or(vec![left, right])
}
}
_ => panic!("Invalid operator"),
}
}
pub struct ExprParser {
stack: Vec<SimpleExprParser>,
}
impl ExprParser {
pub fn new() -> ExprParser {
ExprParser {
stack: vec![SimpleExprParser::new()],
}
}
pub fn push_atom(&mut self, c: char) -> Result<(), ParseError> {
self.top_mut().push_atom(c)
}
pub fn push_op(&mut self, op: char) -> Result<(), ParseError> {
self.top_mut().push_op(op)
}
pub fn open_paren(&mut self) -> Result<(), ParseError> {
self.stack.push(SimpleExprParser::new());
Ok(())
}
pub fn close_paren(&mut self) -> Result<(), ParseError> {
if self.stack.len() == 1 {
return Err(ParseError::UnexpectedParen);
}
let parser = self.stack.pop().unwrap();
let expr = parser.finish()?;
self.top_mut().expect_operand_check(expr)
}
fn top_mut(&mut self) -> &mut SimpleExprParser {
self.stack.last_mut().unwrap()
}
pub fn finish(mut self) -> Result<Expression, ParseError> {
if self.stack.len() != 1 {
return Err(ParseError::UnexpectedParen);
}
self.stack.pop().unwrap().finish()
}
}
#[derive(Clone, Debug, PartialEq, Eq)]
pub enum Value {
True,
False,
Expr(Expression),
}
fn eval_rec(
e: &Expression,
tset: &std::collections::HashSet<char>,
fset: &std::collections::HashSet<char>,
) -> Value {
use Value::*;
match e {
Expression::Atom(c) => {
if tset.contains(c) {
True
} else if fset.contains(c) {
False
} else {
Expr(Expression::Atom(*c))
}
}
Expression::Not(inner) => match eval_rec(inner, tset, fset) {
True => False,
False => True,
Expr(x) => Expr(Expression::Not(Box::new(x))),
},
Expression::And(v) => {
let mut new_exprs = Vec::new();
for sub in v {
match eval_rec(sub, tset, fset) {
False => return False,
True => (),
Expr(x) => new_exprs.push(x),
}
}
if new_exprs.is_empty() {
True
} else if new_exprs.len() == 1 {
Expr(new_exprs.pop().unwrap())
} else {
Expr(Expression::And(new_exprs))
}
}
Expression::Or(v) => {
let mut new_exprs = Vec::new();
for sub in v {
match eval_rec(sub, tset, fset) {
True => return True,
False => (),
Expr(x) => new_exprs.push(x),
}
}
if new_exprs.is_empty() {
False
} else if new_exprs.len() == 1 {
Expr(new_exprs.pop().unwrap())
} else {
Expr(Expression::Or(new_exprs))
}
}
}
}
pub fn eval(expr: &Expression, truthy: &[char], falsy: &[char]) -> Value {
let tset: std::collections::HashSet<char> = truthy.iter().cloned().collect();
let fset: std::collections::HashSet<char> = falsy.iter().cloned().collect();
eval_rec(expr, &tset, &fset)
}

Лог от изпълнението

Compiling solution v0.1.0 (/tmp/d20241224-258381-1ua07gt/solution)
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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
   |
30 |         crate::solution_test::Value($c)
   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30 |         solution::Value($c)
   |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
   |
36 |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36 |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
   |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
   |
30 |         crate::solution_test::Value($c)
   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30 |         solution::Value($c)
   |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
   |
39 |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39 |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
   |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
   |
30 |         crate::solution_test::Value($c)
   |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30 |         solution::Value($c)
   |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
36  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
36  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
39  |         crate::solution_test::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
39  |         solution::Value(vec![$( expr!($tag($( $e )*)) ),*])
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
30  |         crate::solution_test::Value($c)
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
30  |         solution::Value($c)
    |         ~~~~~~~~~~~~~~~

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)
help: there is an enum variant `crate::solution_test::Value::Expr` and 1 other; try using the variant's enum
    |
33  |         crate::solution_test::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~~~~~~~~~~~~~
33  |         solution::Value(Box::new(expr!( $tag($( $e )*) )))
    |         ~~~~~~~~~~~~~~~

For more information about this error, try `rustc --explain E0433`.
error: could not compile `solution` due to 237 previous errors

История (1 версия и 0 коментара)

Божидар качи първо решение на 22.12.2024 19:07 (преди 9 месеца)