This commit is contained in:
2025-09-01 22:42:59 +10:00
parent 3b7b0868b0
commit ea0359c2c5
288 changed files with 172 additions and 0 deletions

1275
backend/.test/Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

7
backend/.test/Cargo.toml Normal file
View File

@@ -0,0 +1,7 @@
[package]
name = "lead-rust"
version = "0.1.0"
edition = "2024"
[dependencies]
websocket = "0.27.1"

102
backend/flake.lock generated Normal file
View File

@@ -0,0 +1,102 @@
{
"nodes": {
"fenix": {
"inputs": {
"nixpkgs": [
"naersk",
"nixpkgs"
],
"rust-analyzer-src": "rust-analyzer-src"
},
"locked": {
"lastModified": 1752475459,
"narHash": "sha256-z6QEu4ZFuHiqdOPbYss4/Q8B0BFhacR8ts6jO/F/aOU=",
"owner": "nix-community",
"repo": "fenix",
"rev": "bf0d6f70f4c9a9cf8845f992105652173f4b617f",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "fenix",
"type": "github"
}
},
"naersk": {
"inputs": {
"fenix": "fenix",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1752689277,
"narHash": "sha256-uldUBFkZe/E7qbvxa3mH1ItrWZyT6w1dBKJQF/3ZSsc=",
"owner": "nix-community",
"repo": "naersk",
"rev": "0e72363d0938b0208d6c646d10649164c43f4d64",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "naersk",
"type": "github"
}
},
"nixpkgs": {
"locked": {
"lastModified": 1752077645,
"narHash": "sha256-HM791ZQtXV93xtCY+ZxG1REzhQenSQO020cu6rHtAPk=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "be9e214982e20b8310878ac2baa063a961c1bdf6",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixpkgs-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1756542300,
"narHash": "sha256-tlOn88coG5fzdyqz6R93SQL5Gpq+m/DsWpekNFhqPQk=",
"owner": "nixos",
"repo": "nixpkgs",
"rev": "d7600c775f877cd87b4f5a831c28aa94137377aa",
"type": "github"
},
"original": {
"owner": "nixos",
"ref": "nixos-unstable",
"repo": "nixpkgs",
"type": "github"
}
},
"root": {
"inputs": {
"naersk": "naersk",
"nixpkgs": "nixpkgs_2"
}
},
"rust-analyzer-src": {
"flake": false,
"locked": {
"lastModified": 1752428706,
"narHash": "sha256-EJcdxw3aXfP8Ex1Nm3s0awyH9egQvB2Gu+QEnJn2Sfg=",
"owner": "rust-lang",
"repo": "rust-analyzer",
"rev": "591e3b7624be97e4443ea7b5542c191311aa141d",
"type": "github"
},
"original": {
"owner": "rust-lang",
"ref": "nightly",
"repo": "rust-analyzer",
"type": "github"
}
}
},
"root": "root",
"version": 7
}

24
backend/flake.nix Normal file
View File

@@ -0,0 +1,24 @@
{
description = "lead-rust";
inputs = {
naersk.url = "github:nix-community/naersk";
nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable";
};
outputs = {
self,
naersk,
nixpkgs,
}: let
system = "x86_64-linux";
pkgs = import nixpkgs {inherit system;};
naerskLib = pkgs.callPackage naersk {};
in {
packages.${system}.default = naerskLib.buildPackage {
src = ./.;
buildInputs = [pkgs.openssl];
nativeBuildInputs = [pkgs.pkg-config];
};
};
}

99
backend/src/cell.rs Normal file
View File

@@ -0,0 +1,99 @@
use std::collections::HashSet;
use crate::evaluator::*;
#[derive(Clone)]
pub struct Cell {
eval: Eval,
raw: String,
i_dep: HashSet<CellRef>,
they_dep: HashSet<CellRef>,
}
impl Cell {
pub fn new(eval: Eval, raw: String) -> Self {
Self {
eval,
raw,
i_dep: HashSet::new(),
they_dep: HashSet::new(),
}
}
pub fn raw(&self) -> String {
self.raw.clone()
}
pub fn eval(&self) -> Eval {
self.eval.clone()
}
pub fn add_i_dep(&mut self, dep: CellRef) {
self.i_dep.insert(dep);
}
pub fn add_they_dep(&mut self, dep: CellRef) {
self.they_dep.insert(dep);
}
pub fn clear_i_dep(&mut self) {
self.i_dep.clear();
}
pub fn clear_they_dep(&mut self) {
self.they_dep.clear();
}
pub fn set_eval(&mut self, eval: Eval) {
self.eval = eval;
}
}
#[derive(Debug, Clone, Copy, Hash, PartialEq, Eq)]
pub struct CellRef {
pub row: i64,
pub col: i64,
}
impl CellRef {
pub fn new(s: String) -> Result<CellRef, String> {
let s = s.trim();
let mut col: i64 = 0;
let mut i = 0;
// consume leading letters for the column
for (idx, ch) in s.char_indices() {
if ch.is_ascii_alphabetic() {
let u = ch.to_ascii_uppercase() as u8;
let val = (u - b'A' + 1) as i64; // A->1 ... Z->26
col = col * 26 + val;
i = idx + ch.len_utf8();
} else {
break;
}
}
if col <= 0 {
return Err(format!(
"Parse error: missing column letters in cell ref: {s}"
));
}
let row_part = &s[i..];
if row_part.is_empty() {
return Err(format!(
"Parse error: missing column letters in cell ref: {s}"
));
} else if !row_part.chars().all(|c| c.is_ascii_digit()) {
return Err(format!(
"Parse error: row part must be numeric in cell ref: {s}"
));
}
if let Ok(row) = row_part.parse::<i64>() {
Ok(CellRef { row, col })
} else {
Err(format!("Parse error: invalid row number."))
}
}
}

168
backend/src/evaluator.rs Normal file
View File

@@ -0,0 +1,168 @@
use crate::cell::{Cell, CellRef};
use crate::parser::*;
use crate::tokenizer::Literal;
use std::collections::HashMap;
use std::fmt;
#[derive(Debug, PartialEq, Clone)]
pub enum Eval {
Literal(Literal),
}
impl fmt::Display for Eval {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Eval::Literal(lit) => write!(f, "{lit:?}"),
}
}
}
pub struct Evaluator {
cells: HashMap<CellRef, Cell>,
}
impl Evaluator {
pub fn new() -> Evaluator {
return Evaluator {
cells: HashMap::new(),
};
}
pub fn set_cell(&mut self, cell_ref: CellRef, raw_val: String) -> Result<(), String> {
if self.cells.contains_key(&cell_ref) && self.cells[&cell_ref].raw() == raw_val {
return Ok(());
}
let eval: Eval;
if let Some(c) = raw_val.chars().nth(0)
&& c == '='
{
eval = self.evaluate(raw_val[1..].to_owned())?;
} else {
match self.evaluate(raw_val.to_owned()) {
Ok(e) => {
eval = e;
}
Err(_) => eval = Eval::Literal(Literal::String(raw_val.to_owned())),
}
}
self.cells.insert(cell_ref, Cell::new(eval, raw_val));
Ok(())
}
pub fn get_cell(&mut self, cell_ref: CellRef) -> Result<(String, Eval), String> {
if !self.cells.contains_key(&cell_ref) {
return Err(format!("Cell at {:?} not found.", cell_ref));
}
let cell = &self.cells[&cell_ref];
Ok((cell.raw(), cell.eval()))
}
pub fn evaluate(&mut self, str: String) -> Result<Eval, String> {
let (mut expr, mut deps) = parse(&str)?;
self.evaluate_expr(&mut expr)
}
fn evaluate_expr(&mut self, expr: &mut Expr) -> Result<Eval, String> {
let res = match expr {
Expr::Literal(lit) => Eval::Literal(lit.clone()),
Expr::CellRef(re) => self.get_cell(re.to_owned())?.1,
Expr::Infix { op, lhs, rhs } => {
let lval = self.evaluate_expr(lhs)?;
let rval = self.evaluate_expr(rhs)?;
match op {
InfixOp::ADD => eval_add(&lval, &rval)?,
InfixOp::SUB => eval_sub(&lval, &rval)?,
InfixOp::MUL => eval_mul(&lval, &rval)?,
InfixOp::DIV => eval_div(&lval, &rval)?,
_ => return Err(format!("Evaluation error: Unsupported operator {:?}", op)),
}
}
it => return Err(format!("Evaluation error: Unsupported expression {:?}", it)),
};
Ok(res)
}
}
fn eval_add(lval: &Eval, rval: &Eval) -> Result<Eval, String> {
match (lval, rval) {
(Eval::Literal(a), Eval::Literal(b)) => {
if let Some(res) = eval_numeric_infix(a, b, |x, y| x + y, |x, y| x + y) {
return Ok(Eval::Literal(res));
}
// Try string concatenation
if let (Literal::String(x), Literal::String(y)) = (a, b) {
let mut res = x.to_owned();
res.push_str(y);
return Ok(Eval::Literal(Literal::String(res)));
}
Err("Evaluation error: expected string or numeric types for ADD function.".to_string())
}
}
}
fn eval_sub(lval: &Eval, rval: &Eval) -> Result<Eval, String> {
match (lval, rval) {
(Eval::Literal(a), Eval::Literal(b)) => {
if let Some(res) = eval_numeric_infix(a, b, |x, y| x - y, |x, y| x - y) {
return Ok(Eval::Literal(res));
}
Err("Evaluation error: expected string or numeric types for SUB function.".to_string())
}
}
}
fn eval_mul(lval: &Eval, rval: &Eval) -> Result<Eval, String> {
match (lval, rval) {
(Eval::Literal(a), Eval::Literal(b)) => {
if let Some(res) = eval_numeric_infix(a, b, |x, y| x * y, |x, y| x * y) {
return Ok(Eval::Literal(res));
}
Err("Evaluation error: expected string or numeric types for MUL function.".to_string())
}
}
}
fn eval_div(lval: &Eval, rval: &Eval) -> Result<Eval, String> {
match (lval, rval) {
(Eval::Literal(a), Eval::Literal(b)) => {
if let Some(res) = eval_numeric_infix(a, b, |x, y| x / y, |x, y| x / y) {
return Ok(Eval::Literal(res));
}
Err("Evaluation error: expected string or numeric types for DIV function.".to_string())
}
}
}
fn eval_numeric_infix<FInt, FDouble>(
lhs: &Literal,
rhs: &Literal,
int_op: FInt,
double_op: FDouble,
) -> Option<Literal>
where
FInt: Fn(i64, i64) -> i64,
FDouble: Fn(f64, f64) -> f64,
{
match (lhs, rhs) {
(Literal::Integer(a), Literal::Integer(b)) => Some(Literal::Integer(int_op(*a, *b))),
(Literal::Double(a), Literal::Double(b)) => Some(Literal::Double(double_op(*a, *b))),
(Literal::Integer(a), Literal::Double(b)) => {
Some(Literal::Double(double_op(*a as f64, *b)))
}
(Literal::Double(a), Literal::Integer(b)) => {
Some(Literal::Double(double_op(*a, *b as f64)))
}
_ => None,
}
}

69
backend/src/main.rs Normal file
View File

@@ -0,0 +1,69 @@
mod cell;
mod evaluator;
mod parser;
mod tokenizer;
use std::io;
use websocket::server::WsServer;
use crate::{cell::CellRef, evaluator::Evaluator};
fn main() {
// let mut input = String::new();
// io::stdin().read_line(&mut input).expect("Expected input.");
// let mut ast = parser::parse(&input).unwrap();
// println!("{}", ast.pretty());
let mut evaluator = Evaluator::new();
// // println!("{}", evaluator.evaluate(input).unwrap());
// let a1 = CellRef { row: 1, col: 2 };
// evaluator.set_cell(a1, input).unwrap();
// println!("{:?}", evaluator.get_cell(a1).unwrap());
println!("CMDS : set <cell_ref>, get <cell_ref>");
loop {
let mut input = String::new();
io::stdin().read_line(&mut input).expect("Expected input.");
let cmds = ["set", "get"];
let cmd = &input[0..3];
if !cmds.iter().any(|c| c == &cmd) {
println!("{} is an invalid command!", cmd);
println!("CMDS : set <cell_ref>, get <cell_ref>");
continue;
}
let rest = &input[4..];
let mut parts = rest.splitn(2, char::is_whitespace);
let raw_ref = parts.next().unwrap_or("").trim(); // cell reference
let raw_str = parts.next().unwrap_or("").trim(); // rest of the string (value)
// println!("{} {}", raw_ref, raw_str);
if let Ok(cell_ref) = CellRef::new(raw_ref.to_owned()) {
match cmd {
"set" => match evaluator.set_cell(cell_ref, raw_str.to_owned()) {
Ok(_) => println!("Successfully set cell {} to {}.", raw_ref, raw_str),
Err(e) => println!("{}", e),
},
"get" => match evaluator.get_cell(cell_ref) {
Ok(res) => println!("{:?}", res),
Err(e) => println!("{}", e),
},
_ => {
panic!("Impossible.");
}
}
} else {
println!("{} is an invalid cell reference!", raw_ref);
continue;
}
}
let rt = Runtime::new().unwrap();
let handle = rt.handle().clone();
let addr = "127.0.0.1:7050";
let socket = WsServer::bind(addr, handle);
}

291
backend/src/parser.rs Normal file
View File

@@ -0,0 +1,291 @@
use crate::{cell::CellRef, tokenizer::*};
use std::{collections::HashSet, fmt};
#[derive(Debug, PartialEq, Clone)]
pub enum PrefixOp {
POS,
NEG,
NOT,
}
#[derive(Debug, PartialEq, Clone)]
pub enum PostfixOp {
PERCENT,
}
#[derive(Debug, PartialEq, Clone)]
pub enum InfixOp {
MUL,
DIV,
ADD,
SUB,
AND,
OR,
}
#[derive(Debug, PartialEq, Clone)]
pub enum Expr {
Literal(Literal),
CellRef(CellRef),
Function {
name: String,
args: Vec<Expr>,
},
Group(Box<Expr>),
Prefix {
op: PrefixOp,
expr: Box<Expr>,
},
Postfix {
op: PostfixOp,
expr: Box<Expr>,
},
Infix {
op: InfixOp,
lhs: Box<Expr>,
rhs: Box<Expr>,
},
}
// Ref: https://matklad.github.io/2020/04/13/simple-but-powerful-pratt-parsing.html
// We have left and right precedence as to allow associative operators
// to parse as you would more expect and to break ties in a predictable manner
pub trait Precedence {
fn prec(&self) -> (u8, u8);
}
impl Precedence for InfixOp {
fn prec(&self) -> (u8, u8) {
match self {
InfixOp::MUL | InfixOp::DIV | InfixOp::AND => (3, 4),
InfixOp::ADD | InfixOp::SUB | InfixOp::OR => (1, 2),
}
}
}
impl Precedence for PrefixOp {
fn prec(&self) -> (u8, u8) {
match self {
_it => (0, 5),
}
}
}
impl Precedence for PostfixOp {
fn prec(&self) -> (u8, u8) {
match self {
_it => (6, 0),
}
}
}
impl fmt::Display for Expr {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Expr::Literal(lit) => write!(f, "{lit:?}"),
Expr::Group(expr) => write!(f, "({expr})"),
Expr::Prefix { op, expr } => write!(f, "({op:?} {expr})"),
Expr::Postfix { op, expr } => write!(f, "({op:?} {expr})"),
Expr::Infix { op, lhs, rhs } => write!(f, "({lhs} {op:?} {rhs})"),
Expr::Function { name, args } => write!(f, "{name}({args:?})"),
Expr::CellRef(it) => write!(f, "{it:?}"),
}
}
}
#[allow(dead_code)]
impl Expr {
pub fn pretty(&self) -> String {
// entry point for users — root printed without └──
let mut result = String::new();
result.push_str(&format!("{}\n", self.node_name()));
result.push_str(&self.pretty_subtree("", true));
result
}
fn pretty_subtree(&self, prefix: &str, is_tail: bool) -> String {
let mut result = String::new();
let new_prefix = if is_tail {
format!("{} ", prefix)
} else {
format!("{}", prefix)
};
match self {
Expr::Literal(_) => {}
Expr::CellRef(_) => {}
Expr::Group(expr) => {
result.push_str(&expr.pretty_branch(&new_prefix, true));
}
Expr::Prefix { expr, .. } => {
result.push_str(&expr.pretty_branch(&new_prefix, true));
}
Expr::Postfix { expr, .. } => {
result.push_str(&expr.pretty_branch(&new_prefix, true));
}
Expr::Infix { lhs, rhs, .. } => {
result.push_str(&lhs.pretty_branch(&new_prefix, false));
result.push_str(&rhs.pretty_branch(&new_prefix, true));
}
Expr::Function { args, .. } => {
for (idx, arg) in args.iter().enumerate() {
result.push_str(&arg.pretty_branch(&new_prefix, idx == args.len() - 1));
}
}
}
result
}
fn pretty_branch(&self, prefix: &str, is_tail: bool) -> String {
let mut result = String::new();
let branch = if is_tail { "└── " } else { "├── " };
result.push_str(&format!("{}{}{}\n", prefix, branch, self.node_name()));
result.push_str(&self.pretty_subtree(prefix, is_tail));
result
}
fn node_name(&self) -> String {
match self {
Expr::Literal(lit) => format!("Literal({:?})", lit),
Expr::Group(_) => "Group".to_string(),
Expr::Prefix { op, .. } => format!("Prefix({:?})", op),
Expr::Postfix { op, .. } => format!("Postfix({:?})", op),
Expr::Infix { op, .. } => format!("Infix({:?})", op),
Expr::Function { name, .. } => format!("Function({:?})", name),
Expr::CellRef(it) => format!("{:?}", it),
}
}
}
pub fn parse(input: &str) -> Result<(Expr, HashSet<CellRef>), String> {
let mut tokenizer = Tokenizer::new(input)?;
// println!("{:?}", tokenizer.tokens);
let mut deps = HashSet::new();
Ok((_parse(&mut tokenizer, 0, &mut deps)?, deps))
}
pub fn _parse(
input: &mut Tokenizer,
min_prec: u8,
deps: &mut HashSet<CellRef>,
) -> Result<Expr, String> {
let mut lhs = match input.next() {
Token::Literal(it) => Expr::Literal(it),
Token::Identifier(id) if id == "true" => Expr::Literal(Literal::Boolean(true)),
Token::Identifier(id) if id == "false" => Expr::Literal(Literal::Boolean(false)),
Token::Paren('(') => {
let lhs = _parse(input, 0, deps)?;
if input.next() != Token::Paren(')') {
return Err(format!("Parse error: expected closing paren."));
}
Expr::Group(Box::new(lhs))
}
Token::Operator(op) => {
let prefix_op = match op {
'+' => PrefixOp::POS,
'-' => PrefixOp::NEG,
'!' => PrefixOp::NOT,
it => return Err(format!("Parse error: unknown prefix operator {:?}.", it)),
};
let rhs = _parse(input, prefix_op.prec().1, deps)?;
Expr::Prefix {
op: prefix_op,
expr: Box::new(rhs),
}
}
Token::Identifier(id) => match input.peek() {
Token::Paren('(') => {
input.next();
let mut args: Vec<Expr> = Vec::new();
loop {
let nxt = input.peek();
if nxt == Token::Paren(')') {
input.next();
break;
} else if nxt != Token::Comma && args.len() != 0 {
return Err(format!(
"Parse error: expected comma while parsing argument of function {:?}.",
id
));
}
if args.len() != 0 {
input.next(); // Skip comma
}
let arg = _parse(input, 0, deps)?;
args.push(arg);
}
Expr::Function {
name: id,
args: args,
}
}
_ => {
let cell_ref = CellRef::new(id)?;
deps.insert(cell_ref);
Expr::CellRef(cell_ref)
}
},
it => return Err(format!("Parse error: did not expect token {:?}.", it)),
};
// In the reference article this is a loop with match
// statement that breaks on Eof and closing paren but this is simpler and works as expected
while let Token::Operator(op) = input.peek() {
if "+-*/&|".contains(op) {
let infix_op = match op {
'+' => InfixOp::ADD,
'-' => InfixOp::SUB,
'*' => InfixOp::MUL,
'/' => InfixOp::DIV,
'&' => InfixOp::AND,
'|' => InfixOp::OR,
it => {
return Err(format!("Parse error: do not know infix operator {:?}.", it));
}
};
let (l_prec, r_prec) = infix_op.prec();
if l_prec < min_prec {
break;
}
input.next();
let rhs = _parse(input, r_prec, deps)?;
lhs = Expr::Infix {
op: infix_op,
lhs: Box::new(lhs),
rhs: Box::new(rhs),
};
} else if "%".contains(op) {
let postfix_op = match op {
'%' => PostfixOp::PERCENT,
it => {
return Err(format!(
"Parse error: do not know postfix operator {:?}.",
it
));
}
};
let (l_prec, _) = postfix_op.prec();
if l_prec < min_prec {
break;
}
input.next();
lhs = Expr::Postfix {
op: postfix_op,
expr: Box::new(lhs),
};
}
}
Ok(lhs)
}

136
backend/src/tokenizer.rs Normal file
View File

@@ -0,0 +1,136 @@
#[derive(Debug, Clone, PartialEq)]
pub enum Literal {
Integer(i64),
Double(f64),
Boolean(bool),
String(String),
}
#[derive(Debug, Clone, PartialEq)]
pub enum Token {
Identifier(String), // Could be a function
Literal(Literal),
Operator(char),
Paren(char),
Comma,
Eof,
}
pub struct Tokenizer {
pub tokens: Vec<Token>,
}
impl Tokenizer {
pub fn new(input: &str) -> Result<Tokenizer, String> {
let mut tokens = Vec::new();
let mut chars = input.chars().peekable();
while let Some(&c) = chars.peek() {
if c.is_whitespace() {
chars.next();
} else if c.is_ascii_alphabetic() {
// parse identifier
let mut ident = String::new();
while let Some(&ch) = chars.peek() {
if ch.is_ascii_alphanumeric() || ch == '_' {
ident.push(ch);
chars.next();
} else {
break;
}
}
tokens.push(Token::Identifier(ident));
} else if c.is_ascii_digit() {
// parse number
let mut number = String::new();
let mut is_decimal = false;
while let Some(&ch) = chars.peek() {
if ch.is_ascii_digit() {
number.push(ch);
chars.next();
} else if ch == '.' && !is_decimal {
is_decimal = true;
number.push(ch);
chars.next();
} else {
break;
}
}
if is_decimal {
tokens.push(Token::Literal(Literal::Double(number.parse().unwrap())))
} else {
tokens.push(Token::Literal(Literal::Integer(number.parse().unwrap())))
};
} else if c == '"' || c == '\'' {
// parse string literal
let mut string = String::new();
let quote = c;
let mut escapes = 0;
chars.next(); // consume opening quote
while let Some(&ch) = chars.peek() {
chars.next();
if ch == quote && escapes % 2 == 0 {
break;
}
if ch == '\\' {
escapes += 1;
} else {
escapes = 0;
}
string.push(ch);
}
tokens.push(Token::Literal(Literal::String(string)));
} else if "+-*/^!%&|".contains(c) {
tokens.push(Token::Operator(c));
chars.next();
} else if "()".contains(c) {
tokens.push(Token::Paren(c));
chars.next();
} else if c == ',' {
tokens.push(Token::Comma);
chars.next();
} else {
return Err(format!("Encountered unknown token char: {c}"));
}
}
tokens.reverse(); // Since we want FIFO and next + peek are implemented as LILO
Ok(Tokenizer { tokens })
}
pub fn next(&mut self) -> Token {
self.tokens.pop().unwrap_or(Token::Eof)
}
pub fn peek(&mut self) -> Token {
self.tokens.last().cloned().unwrap_or(Token::Eof)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_tokenizer() {
let raw = "hello hello 1.23 this 5 (1+2)";
let expected: Vec<Token> = vec![
Token::Identifier("hello".to_string()),
Token::Identifier("hello".to_string()),
Token::Literal(Literal::Double(1.23)),
Token::Identifier("this".to_string()),
Token::Literal(Literal::Integer(5)),
Token::Paren('('),
Token::Literal(Literal::Integer(1)),
Token::Operator('+'),
Token::Literal(Literal::Integer(2)),
Token::Paren(')'),
];
let t = Tokenizer::new(&raw).unwrap();
assert_eq!(t.tokens, expected);
}
}

View File

@@ -0,0 +1 @@
{"rustc_fingerprint":11413234463364555679,"outputs":{"17747080675513052775":{"success":true,"status":"","code":0,"stdout":"rustc 1.88.0 (6b00bc388 2025-06-23) (built from a source tarball)\nbinary: rustc\ncommit-hash: 6b00bc3880198600130e1cf62b8f8a93494488cc\ncommit-date: 2025-06-23\nhost: x86_64-unknown-linux-gnu\nrelease: 1.88.0\nLLVM version: 20.1.6\n","stderr":""},"7971740275564407648":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/nix/store/xhjgrhhjbf0kilrvy8g6dffsw1qz9qfk-rustc-1.88.0\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""},"11857020428658561806":{"success":true,"status":"","code":0,"stdout":"___\nlib___.rlib\nlib___.so\nlib___.so\nlib___.a\nlib___.so\n/nix/store/xhjgrhhjbf0kilrvy8g6dffsw1qz9qfk-rustc-1.88.0\noff\npacked\nunpacked\n___\ndebug_assertions\npanic=\"unwind\"\nproc_macro\ntarget_abi=\"\"\ntarget_arch=\"x86_64\"\ntarget_endian=\"little\"\ntarget_env=\"gnu\"\ntarget_family=\"unix\"\ntarget_feature=\"fxsr\"\ntarget_feature=\"sse\"\ntarget_feature=\"sse2\"\ntarget_has_atomic=\"16\"\ntarget_has_atomic=\"32\"\ntarget_has_atomic=\"64\"\ntarget_has_atomic=\"8\"\ntarget_has_atomic=\"ptr\"\ntarget_os=\"linux\"\ntarget_pointer_width=\"64\"\ntarget_vendor=\"unknown\"\nunix\n","stderr":""}},"successes":{}}

View File

@@ -0,0 +1,3 @@
Signature: 8a477f597d28d172789f06886806bc55
# This file is a cache directory tag created by cargo.
# For information about cache directory tags see https://bford.info/cachedir/

View File

View File

@@ -0,0 +1 @@
This file has an mtime of when this was started.

View File

@@ -0,0 +1 @@
6f4076a60f572e20

View File

@@ -0,0 +1 @@
{"rustc":7392355663475926777,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"extra-platforms\", \"serde\", \"std\"]","target":15971911772774047941,"profile":13827760451848848284,"path":17495929375310606232,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/bytes-b7a8adba472fd3d1/dep-lib-bytes","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}

View File

@@ -0,0 +1 @@
This file has an mtime of when this was started.

View File

@@ -0,0 +1 @@
14595fcc7dbc8a28

View File

@@ -0,0 +1 @@
{"rustc":7392355663475926777,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"std\"]","target":10248144769085601448,"profile":2241668132362809309,"path":636161265678825063,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/fnv-03ef42a39b0f64e6/dep-lib-fnv","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}

View File

@@ -0,0 +1 @@
This file has an mtime of when this was started.

View File

@@ -0,0 +1 @@
c4164fa71ffab791

View File

@@ -0,0 +1 @@
{"rustc":7392355663475926777,"features":"[\"default\", \"std\"]","declared_features":"[\"default\", \"std\"]","target":12592702405390259930,"profile":2241668132362809309,"path":5373269520517302921,"deps":[[1345404220202658316,"fnv",false,2921354556788922644],[7695812897323945497,"itoa",false,17283172376607960751],[16066129441945555748,"bytes",false,2318886582871277679]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/http-3fdccdd8122c83bd/dep-lib-http","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}

View File

@@ -0,0 +1 @@
This file has an mtime of when this was started.

View File

@@ -0,0 +1 @@
afae8fd3b429daef

View File

@@ -0,0 +1 @@
{"rustc":7392355663475926777,"features":"[]","declared_features":"[\"no-panic\"]","target":8239509073162986830,"profile":2241668132362809309,"path":9277145852362913373,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/itoa-b2865fe037c8910d/dep-lib-itoa","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}

View File

@@ -0,0 +1 @@
0d2d5581515f0468

View File

@@ -0,0 +1 @@
{"rustc":7392355663475926777,"features":"[]","declared_features":"[]","target":9940818901061922722,"profile":17672942494452627365,"path":4942398508502643691,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/lead-rust-79c563f084c6ab18/dep-bin-lead-rust","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}

View File

@@ -0,0 +1 @@
This file has an mtime of when this was started.

View File

@@ -0,0 +1,6 @@
{"$message_type":"diagnostic","message":"unused variable: `deps`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/evaluator.rs","byte_start":1716,"byte_end":1720,"line_start":66,"line_end":66,"column_start":28,"column_end":32,"is_primary":true,"text":[{"text":" let (mut expr, mut deps) = parse(&str)?;","highlight_start":28,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src/evaluator.rs","byte_start":1716,"byte_end":1720,"line_start":66,"line_end":66,"column_start":28,"column_end":32,"is_primary":true,"text":[{"text":" let (mut expr, mut deps) = parse(&str)?;","highlight_start":28,"highlight_end":32}],"label":null,"suggested_replacement":"_deps","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `deps`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/evaluator.rs:66:28\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m66\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m let (mut expr, mut deps) = parse(&str)?;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_deps`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_variables)]` on by default\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"variable does not need to be mutable","code":{"code":"unused_mut","explanation":null},"level":"warning","spans":[{"file_name":"src/evaluator.rs","byte_start":1712,"byte_end":1720,"line_start":66,"line_end":66,"column_start":24,"column_end":32,"is_primary":true,"text":[{"text":" let (mut expr, mut deps) = parse(&str)?;","highlight_start":24,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_mut)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove this `mut`","code":null,"level":"help","spans":[{"file_name":"src/evaluator.rs","byte_start":1712,"byte_end":1716,"line_start":66,"line_end":66,"column_start":24,"column_end":28,"is_primary":true,"text":[{"text":" let (mut expr, mut deps) = parse(&str)?;","highlight_start":24,"highlight_end":28}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable does not need to be mutable\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/evaluator.rs:66:24\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m66\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m let (mut expr, mut deps) = parse(&str)?;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----\u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mhelp: remove this `mut`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_mut)]` on by default\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"field `deps` is never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/cell.rs","byte_start":86,"byte_end":90,"line_start":6,"line_end":6,"column_start":12,"column_end":16,"is_primary":false,"text":[{"text":"pub struct Cell {","highlight_start":12,"highlight_end":16}],"label":"field in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/cell.rs","byte_start":130,"byte_end":134,"line_start":9,"line_end":9,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":" deps: HashSet<CellRef>,","highlight_start":5,"highlight_end":9}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`Cell` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"`#[warn(dead_code)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: field `deps` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/cell.rs:9:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m6\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub struct Cell {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mfield in this struct\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m9\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m deps: HashSet<CellRef>,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `Cell` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` on by default\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"methods `add_dep`, `clear_deps`, and `set_eval` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/cell.rs","byte_start":157,"byte_end":166,"line_start":12,"line_end":12,"column_start":1,"column_end":10,"is_primary":false,"text":[{"text":"impl Cell {","highlight_start":1,"highlight_end":10}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/cell.rs","byte_start":463,"byte_end":470,"line_start":29,"line_end":29,"column_start":12,"column_end":19,"is_primary":true,"text":[{"text":" pub fn add_dep(&mut self, dep: CellRef) {","highlight_start":12,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/cell.rs","byte_start":547,"byte_end":557,"line_start":33,"line_end":33,"column_start":12,"column_end":22,"is_primary":true,"text":[{"text":" pub fn clear_deps(&mut self) {","highlight_start":12,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/cell.rs","byte_start":616,"byte_end":624,"line_start":37,"line_end":37,"column_start":12,"column_end":20,"is_primary":true,"text":[{"text":" pub fn set_eval(&mut self, eval: Eval) {","highlight_start":12,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: methods `add_dep`, `clear_deps`, and `set_eval` are never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/cell.rs:29:12\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m12\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mimpl Cell {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m---------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mmethods in this implementation\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m29\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn add_dep(&mut self, dep: CellRef) {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m33\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn clear_deps(&mut self) {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m37\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn set_eval(&mut self, eval: Eval) {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"methods `pretty`, `pretty_subtree`, `pretty_branch`, and `node_name` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/parser.rs","byte_start":2144,"byte_end":2153,"line_start":94,"line_end":94,"column_start":1,"column_end":10,"is_primary":false,"text":[{"text":"impl Expr {","highlight_start":1,"highlight_end":10}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/parser.rs","byte_start":2167,"byte_end":2173,"line_start":95,"line_end":95,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":" pub fn pretty(&self) -> String {","highlight_start":12,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/parser.rs","byte_start":2448,"byte_end":2462,"line_start":103,"line_end":103,"column_start":8,"column_end":22,"is_primary":true,"text":[{"text":" fn pretty_subtree(&self, prefix: &str, is_tail: bool) -> String {","highlight_start":8,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/parser.rs","byte_start":3644,"byte_end":3657,"line_start":136,"line_end":136,"column_start":8,"column_end":21,"is_primary":true,"text":[{"text":" fn pretty_branch(&self, prefix: &str, is_tail: bool) -> String {","highlight_start":8,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/parser.rs","byte_start":3992,"byte_end":4001,"line_start":144,"line_end":144,"column_start":8,"column_end":17,"is_primary":true,"text":[{"text":" fn node_name(&self) -> String {","highlight_start":8,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: methods `pretty`, `pretty_subtree`, `pretty_branch`, and `node_name` are never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/parser.rs:95:12\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m94\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mimpl Expr {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m---------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mmethods in this implementation\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m95\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn pretty(&self) -> String {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m103\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m fn pretty_subtree(&self, prefix: &str, is_tail: bool) -> String {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m136\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m fn pretty_branch(&self, prefix: &str, is_tail: bool) -> String {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m144\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m fn node_name(&self) -> String {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"5 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 5 warnings emitted\u001b[0m\n\n"}

View File

@@ -0,0 +1 @@
fe5c2ff0ffcbd9e4

View File

@@ -0,0 +1 @@
{"rustc":7392355663475926777,"features":"[]","declared_features":"[]","target":9940818901061922722,"profile":8731458305071235362,"path":4942398508502643691,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/lead-rust-8715280d3338b630/dep-bin-lead-rust","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}

View File

@@ -0,0 +1 @@
This file has an mtime of when this was started.

View File

@@ -0,0 +1,6 @@
{"$message_type":"diagnostic","message":"unused variable: `deps`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/evaluator.rs","byte_start":1716,"byte_end":1720,"line_start":66,"line_end":66,"column_start":28,"column_end":32,"is_primary":true,"text":[{"text":" let (mut expr, mut deps) = parse(&str)?;","highlight_start":28,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src/evaluator.rs","byte_start":1716,"byte_end":1720,"line_start":66,"line_end":66,"column_start":28,"column_end":32,"is_primary":true,"text":[{"text":" let (mut expr, mut deps) = parse(&str)?;","highlight_start":28,"highlight_end":32}],"label":null,"suggested_replacement":"_deps","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `deps`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/evaluator.rs:66:28\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m66\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m let (mut expr, mut deps) = parse(&str)?;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_deps`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_variables)]` on by default\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"variable does not need to be mutable","code":{"code":"unused_mut","explanation":null},"level":"warning","spans":[{"file_name":"src/evaluator.rs","byte_start":1712,"byte_end":1720,"line_start":66,"line_end":66,"column_start":24,"column_end":32,"is_primary":true,"text":[{"text":" let (mut expr, mut deps) = parse(&str)?;","highlight_start":24,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_mut)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove this `mut`","code":null,"level":"help","spans":[{"file_name":"src/evaluator.rs","byte_start":1712,"byte_end":1716,"line_start":66,"line_end":66,"column_start":24,"column_end":28,"is_primary":true,"text":[{"text":" let (mut expr, mut deps) = parse(&str)?;","highlight_start":24,"highlight_end":28}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable does not need to be mutable\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/evaluator.rs:66:24\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m66\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m let (mut expr, mut deps) = parse(&str)?;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----\u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mhelp: remove this `mut`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_mut)]` on by default\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"field `deps` is never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/cell.rs","byte_start":86,"byte_end":90,"line_start":6,"line_end":6,"column_start":12,"column_end":16,"is_primary":false,"text":[{"text":"pub struct Cell {","highlight_start":12,"highlight_end":16}],"label":"field in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/cell.rs","byte_start":130,"byte_end":134,"line_start":9,"line_end":9,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":" deps: HashSet<CellRef>,","highlight_start":5,"highlight_end":9}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`Cell` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"`#[warn(dead_code)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: field `deps` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/cell.rs:9:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m6\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub struct Cell {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mfield in this struct\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m9\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m deps: HashSet<CellRef>,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `Cell` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` on by default\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"methods `add_dep`, `clear_deps`, and `set_eval` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/cell.rs","byte_start":157,"byte_end":166,"line_start":12,"line_end":12,"column_start":1,"column_end":10,"is_primary":false,"text":[{"text":"impl Cell {","highlight_start":1,"highlight_end":10}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/cell.rs","byte_start":463,"byte_end":470,"line_start":29,"line_end":29,"column_start":12,"column_end":19,"is_primary":true,"text":[{"text":" pub fn add_dep(&mut self, dep: CellRef) {","highlight_start":12,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/cell.rs","byte_start":547,"byte_end":557,"line_start":33,"line_end":33,"column_start":12,"column_end":22,"is_primary":true,"text":[{"text":" pub fn clear_deps(&mut self) {","highlight_start":12,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/cell.rs","byte_start":616,"byte_end":624,"line_start":37,"line_end":37,"column_start":12,"column_end":20,"is_primary":true,"text":[{"text":" pub fn set_eval(&mut self, eval: Eval) {","highlight_start":12,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: methods `add_dep`, `clear_deps`, and `set_eval` are never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/cell.rs:29:12\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m12\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mimpl Cell {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m---------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mmethods in this implementation\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m29\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn add_dep(&mut self, dep: CellRef) {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m33\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn clear_deps(&mut self) {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m37\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn set_eval(&mut self, eval: Eval) {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"methods `pretty`, `pretty_subtree`, `pretty_branch`, and `node_name` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/parser.rs","byte_start":2144,"byte_end":2153,"line_start":94,"line_end":94,"column_start":1,"column_end":10,"is_primary":false,"text":[{"text":"impl Expr {","highlight_start":1,"highlight_end":10}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/parser.rs","byte_start":2167,"byte_end":2173,"line_start":95,"line_end":95,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":" pub fn pretty(&self) -> String {","highlight_start":12,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/parser.rs","byte_start":2448,"byte_end":2462,"line_start":103,"line_end":103,"column_start":8,"column_end":22,"is_primary":true,"text":[{"text":" fn pretty_subtree(&self, prefix: &str, is_tail: bool) -> String {","highlight_start":8,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/parser.rs","byte_start":3644,"byte_end":3657,"line_start":136,"line_end":136,"column_start":8,"column_end":21,"is_primary":true,"text":[{"text":" fn pretty_branch(&self, prefix: &str, is_tail: bool) -> String {","highlight_start":8,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/parser.rs","byte_start":3992,"byte_end":4001,"line_start":144,"line_end":144,"column_start":8,"column_end":17,"is_primary":true,"text":[{"text":" fn node_name(&self) -> String {","highlight_start":8,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: methods `pretty`, `pretty_subtree`, `pretty_branch`, and `node_name` are never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/parser.rs:95:12\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m94\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mimpl Expr {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m---------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mmethods in this implementation\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m95\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn pretty(&self) -> String {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m103\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m fn pretty_subtree(&self, prefix: &str, is_tail: bool) -> String {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m136\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m fn pretty_branch(&self, prefix: &str, is_tail: bool) -> String {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m144\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m fn node_name(&self) -> String {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"5 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 5 warnings emitted\u001b[0m\n\n"}

View File

@@ -0,0 +1 @@
This file has an mtime of when this was started.

View File

@@ -0,0 +1,6 @@
{"$message_type":"diagnostic","message":"unused variable: `deps`","code":{"code":"unused_variables","explanation":null},"level":"warning","spans":[{"file_name":"src/evaluator.rs","byte_start":1716,"byte_end":1720,"line_start":66,"line_end":66,"column_start":28,"column_end":32,"is_primary":true,"text":[{"text":" let (mut expr, mut deps) = parse(&str)?;","highlight_start":28,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_variables)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"if this is intentional, prefix it with an underscore","code":null,"level":"help","spans":[{"file_name":"src/evaluator.rs","byte_start":1716,"byte_end":1720,"line_start":66,"line_end":66,"column_start":28,"column_end":32,"is_primary":true,"text":[{"text":" let (mut expr, mut deps) = parse(&str)?;","highlight_start":28,"highlight_end":32}],"label":null,"suggested_replacement":"_deps","suggestion_applicability":"MaybeIncorrect","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused variable: `deps`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/evaluator.rs:66:28\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m66\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m let (mut expr, mut deps) = parse(&str)?;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33mhelp: if this is intentional, prefix it with an underscore: `_deps`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_variables)]` on by default\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"variable does not need to be mutable","code":{"code":"unused_mut","explanation":null},"level":"warning","spans":[{"file_name":"src/evaluator.rs","byte_start":1712,"byte_end":1720,"line_start":66,"line_end":66,"column_start":24,"column_end":32,"is_primary":true,"text":[{"text":" let (mut expr, mut deps) = parse(&str)?;","highlight_start":24,"highlight_end":32}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_mut)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove this `mut`","code":null,"level":"help","spans":[{"file_name":"src/evaluator.rs","byte_start":1712,"byte_end":1716,"line_start":66,"line_end":66,"column_start":24,"column_end":28,"is_primary":true,"text":[{"text":" let (mut expr, mut deps) = parse(&str)?;","highlight_start":24,"highlight_end":28}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variable does not need to be mutable\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/evaluator.rs:66:24\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m66\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m let (mut expr, mut deps) = parse(&str)?;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----\u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mhelp: remove this `mut`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_mut)]` on by default\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"field `deps` is never read","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/cell.rs","byte_start":86,"byte_end":90,"line_start":6,"line_end":6,"column_start":12,"column_end":16,"is_primary":false,"text":[{"text":"pub struct Cell {","highlight_start":12,"highlight_end":16}],"label":"field in this struct","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/cell.rs","byte_start":130,"byte_end":134,"line_start":9,"line_end":9,"column_start":5,"column_end":9,"is_primary":true,"text":[{"text":" deps: HashSet<CellRef>,","highlight_start":5,"highlight_end":9}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`Cell` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"`#[warn(dead_code)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: field `deps` is never read\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/cell.rs:9:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m6\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub struct Cell {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m----\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mfield in this struct\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m9\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m deps: HashSet<CellRef>,\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `Cell` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` on by default\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"methods `add_dep`, `clear_deps`, and `set_eval` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/cell.rs","byte_start":157,"byte_end":166,"line_start":12,"line_end":12,"column_start":1,"column_end":10,"is_primary":false,"text":[{"text":"impl Cell {","highlight_start":1,"highlight_end":10}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/cell.rs","byte_start":463,"byte_end":470,"line_start":29,"line_end":29,"column_start":12,"column_end":19,"is_primary":true,"text":[{"text":" pub fn add_dep(&mut self, dep: CellRef) {","highlight_start":12,"highlight_end":19}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/cell.rs","byte_start":547,"byte_end":557,"line_start":33,"line_end":33,"column_start":12,"column_end":22,"is_primary":true,"text":[{"text":" pub fn clear_deps(&mut self) {","highlight_start":12,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/cell.rs","byte_start":616,"byte_end":624,"line_start":37,"line_end":37,"column_start":12,"column_end":20,"is_primary":true,"text":[{"text":" pub fn set_eval(&mut self, eval: Eval) {","highlight_start":12,"highlight_end":20}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: methods `add_dep`, `clear_deps`, and `set_eval` are never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/cell.rs:29:12\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m12\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mimpl Cell {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m---------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mmethods in this implementation\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m29\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn add_dep(&mut self, dep: CellRef) {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m33\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn clear_deps(&mut self) {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m37\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn set_eval(&mut self, eval: Eval) {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"methods `pretty`, `pretty_subtree`, `pretty_branch`, and `node_name` are never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/parser.rs","byte_start":2144,"byte_end":2153,"line_start":94,"line_end":94,"column_start":1,"column_end":10,"is_primary":false,"text":[{"text":"impl Expr {","highlight_start":1,"highlight_end":10}],"label":"methods in this implementation","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/parser.rs","byte_start":2167,"byte_end":2173,"line_start":95,"line_end":95,"column_start":12,"column_end":18,"is_primary":true,"text":[{"text":" pub fn pretty(&self) -> String {","highlight_start":12,"highlight_end":18}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/parser.rs","byte_start":2448,"byte_end":2462,"line_start":103,"line_end":103,"column_start":8,"column_end":22,"is_primary":true,"text":[{"text":" fn pretty_subtree(&self, prefix: &str, is_tail: bool) -> String {","highlight_start":8,"highlight_end":22}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/parser.rs","byte_start":3644,"byte_end":3657,"line_start":136,"line_end":136,"column_start":8,"column_end":21,"is_primary":true,"text":[{"text":" fn pretty_branch(&self, prefix: &str, is_tail: bool) -> String {","highlight_start":8,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/parser.rs","byte_start":3992,"byte_end":4001,"line_start":144,"line_end":144,"column_start":8,"column_end":17,"is_primary":true,"text":[{"text":" fn node_name(&self) -> String {","highlight_start":8,"highlight_end":17}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: methods `pretty`, `pretty_subtree`, `pretty_branch`, and `node_name` are never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/parser.rs:95:12\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m94\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mimpl Expr {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m---------\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mmethods in this implementation\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m95\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m pub fn pretty(&self) -> String {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m103\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m fn pretty_subtree(&self, prefix: &str, is_tail: bool) -> String {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m136\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m fn pretty_branch(&self, prefix: &str, is_tail: bool) -> String {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m...\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m144\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m fn node_name(&self) -> String {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"5 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 5 warnings emitted\u001b[0m\n\n"}

View File

@@ -0,0 +1 @@
5af63d6694482d90

View File

@@ -0,0 +1 @@
{"rustc":7392355663475926777,"features":"[]","declared_features":"[]","target":9940818901061922722,"profile":3316208278650011218,"path":4942398508502643691,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/lead-rust-ac923cdbaa8c6285/dep-test-bin-lead-rust","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}

View File

@@ -0,0 +1 @@
6d3f3133b1ba55b5

View File

@@ -0,0 +1 @@
{"rustc":7392355663475926777,"features":"[]","declared_features":"[]","target":9940818901061922722,"profile":17672942494452627365,"path":4942398508502643691,"deps":[[9010263965687315507,"http",false,10500136070095509188]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/lead-rust-c5d8fd89dd3e5c59/dep-bin-lead-rust","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}

View File

@@ -0,0 +1 @@
This file has an mtime of when this was started.

View File

@@ -0,0 +1,3 @@
{"$message_type":"diagnostic","message":"variants `Identifier`, `Operator`, `Paren`, and `Unknown` are never constructed","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/tokenizer.rs","byte_start":37,"byte_end":42,"line_start":2,"line_end":2,"column_start":10,"column_end":15,"is_primary":false,"text":[{"text":"pub enum Token {","highlight_start":10,"highlight_end":15}],"label":"variants in this enum","suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/tokenizer.rs","byte_start":49,"byte_end":59,"line_start":3,"line_end":3,"column_start":5,"column_end":15,"is_primary":true,"text":[{"text":" Identifier(String),","highlight_start":5,"highlight_end":15}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/tokenizer.rs","byte_start":90,"byte_end":98,"line_start":5,"line_end":5,"column_start":5,"column_end":13,"is_primary":true,"text":[{"text":" Operator(char),","highlight_start":5,"highlight_end":13}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/tokenizer.rs","byte_start":110,"byte_end":115,"line_start":6,"line_end":6,"column_start":5,"column_end":10,"is_primary":true,"text":[{"text":" Paren(char),","highlight_start":5,"highlight_end":10}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null},{"file_name":"src/tokenizer.rs","byte_start":127,"byte_end":134,"line_start":7,"line_end":7,"column_start":5,"column_end":12,"is_primary":true,"text":[{"text":" Unknown(char),","highlight_start":5,"highlight_end":12}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`Token` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"`#[warn(dead_code)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: variants `Identifier`, `Operator`, `Paren`, and `Unknown` are never constructed\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/tokenizer.rs:3:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m2\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub enum Token {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m-----\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12mvariants in this enum\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m3\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Identifier(String),\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m4\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Number(i64),\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m5\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Operator(char),\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m6\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Paren(char),\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m7\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m Unknown(char),\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `Token` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(dead_code)]` on by default\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"function `tokenize` is never used","code":{"code":"dead_code","explanation":null},"level":"warning","spans":[{"file_name":"src/tokenizer.rs","byte_start":152,"byte_end":160,"line_start":10,"line_end":10,"column_start":8,"column_end":16,"is_primary":true,"text":[{"text":"pub fn tokenize(input: &str) -> Vec<Token> {","highlight_start":8,"highlight_end":16}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: function `tokenize` is never used\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/tokenizer.rs:10:8\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m10\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0mpub fn tokenize(input: &str) -> Vec<Token> {\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"2 warnings emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 2 warnings emitted\u001b[0m\n\n"}

View File

@@ -0,0 +1 @@
This file has an mtime of when this was started.

View File

@@ -0,0 +1 @@
65ae1691789a65a9

View File

@@ -0,0 +1 @@
{"rustc":7392355663475926777,"features":"[]","declared_features":"[]","target":9940818901061922722,"profile":3316208278650011218,"path":4942398508502643691,"deps":[[9010263965687315507,"http",false,10500136070095509188]],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/lead-rust-d2081f88ebedd77c/dep-test-bin-lead-rust","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}

View File

@@ -0,0 +1 @@
This file has an mtime of when this was started.

View File

@@ -0,0 +1,2 @@
{"$message_type":"diagnostic","message":"unused import: `crate::parser::*`","code":{"code":"unused_imports","explanation":null},"level":"warning","spans":[{"file_name":"src/main.rs","byte_start":57,"byte_end":73,"line_start":5,"line_end":5,"column_start":5,"column_end":21,"is_primary":true,"text":[{"text":"use crate::parser::*;","highlight_start":5,"highlight_end":21}],"label":null,"suggested_replacement":null,"suggestion_applicability":null,"expansion":null}],"children":[{"message":"`#[warn(unused_imports)]` on by default","code":null,"level":"note","spans":[],"children":[],"rendered":null},{"message":"remove the whole `use` item","code":null,"level":"help","spans":[{"file_name":"src/main.rs","byte_start":53,"byte_end":75,"line_start":5,"line_end":6,"column_start":1,"column_end":1,"is_primary":true,"text":[{"text":"use crate::parser::*;","highlight_start":1,"highlight_end":22},{"text":"use std::io;","highlight_start":1,"highlight_end":1}],"label":null,"suggested_replacement":"","suggestion_applicability":"MachineApplicable","expansion":null}],"children":[],"rendered":null}],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: unused import: `crate::parser::*`\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m--> \u001b[0m\u001b[0msrc/main.rs:5:5\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m\u001b[1m\u001b[38;5;12m5\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0muse crate::parser::*;\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[33m^^^^^^^^^^^^^^^^\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m|\u001b[0m\n\u001b[0m \u001b[0m\u001b[0m\u001b[1m\u001b[38;5;12m= \u001b[0m\u001b[0m\u001b[1mnote\u001b[0m\u001b[0m: `#[warn(unused_imports)]` on by default\u001b[0m\n\n"}
{"$message_type":"diagnostic","message":"1 warning emitted","code":null,"level":"warning","spans":[],"children":[],"rendered":"\u001b[0m\u001b[1m\u001b[33mwarning\u001b[0m\u001b[0m\u001b[1m: 1 warning emitted\u001b[0m\n\n"}

View File

@@ -0,0 +1 @@
c6b4605e20992aba

View File

@@ -0,0 +1 @@
{"rustc":7392355663475926777,"features":"[]","declared_features":"[]","target":9940818901061922722,"profile":1722584277633009122,"path":4942398508502643691,"deps":[],"local":[{"CheckDepInfo":{"dep_info":"debug/.fingerprint/lead-rust-f42cf83cbde4bc5a/dep-test-bin-lead-rust","checksum":false}}],"rustflags":[],"config":2069994364910194474,"compile_kind":0}

View File

@@ -0,0 +1,22 @@
/home/lloyd/projects/lead-rust/target/debug/deps/bytes-b7a8adba472fd3d1.d: /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/lib.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/mod.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/buf_impl.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/buf_mut.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/chain.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/iter.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/limit.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/reader.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/take.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/uninit_slice.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/vec_deque.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/writer.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/bytes.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/bytes_mut.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/fmt/mod.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/fmt/debug.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/fmt/hex.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/loom.rs
/home/lloyd/projects/lead-rust/target/debug/deps/libbytes-b7a8adba472fd3d1.rmeta: /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/lib.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/mod.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/buf_impl.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/buf_mut.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/chain.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/iter.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/limit.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/reader.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/take.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/uninit_slice.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/vec_deque.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/writer.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/bytes.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/bytes_mut.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/fmt/mod.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/fmt/debug.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/fmt/hex.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/loom.rs
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/lib.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/mod.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/buf_impl.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/buf_mut.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/chain.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/iter.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/limit.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/reader.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/take.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/uninit_slice.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/vec_deque.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/buf/writer.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/bytes.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/bytes_mut.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/fmt/mod.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/fmt/debug.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/fmt/hex.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bytes-1.10.1/src/loom.rs:

View File

@@ -0,0 +1,5 @@
/home/lloyd/projects/lead-rust/target/debug/deps/fnv-03ef42a39b0f64e6.d: /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/fnv-1.0.7/lib.rs
/home/lloyd/projects/lead-rust/target/debug/deps/libfnv-03ef42a39b0f64e6.rmeta: /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/fnv-1.0.7/lib.rs
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/fnv-1.0.7/lib.rs:

View File

@@ -0,0 +1,24 @@
/home/lloyd/projects/lead-rust/target/debug/deps/http-3fdccdd8122c83bd.d: /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/lib.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/convert.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/header/mod.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/header/map.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/header/name.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/header/value.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/method.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/request.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/response.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/status.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/mod.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/authority.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/builder.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/path.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/port.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/scheme.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/version.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/byte_str.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/error.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/extensions.rs
/home/lloyd/projects/lead-rust/target/debug/deps/libhttp-3fdccdd8122c83bd.rmeta: /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/lib.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/convert.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/header/mod.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/header/map.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/header/name.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/header/value.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/method.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/request.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/response.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/status.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/mod.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/authority.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/builder.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/path.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/port.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/scheme.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/version.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/byte_str.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/error.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/extensions.rs
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/lib.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/convert.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/header/mod.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/header/map.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/header/name.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/header/value.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/method.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/request.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/response.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/status.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/mod.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/authority.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/builder.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/path.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/port.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/uri/scheme.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/version.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/byte_str.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/error.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/http-1.3.1/src/extensions.rs:

View File

@@ -0,0 +1,6 @@
/home/lloyd/projects/lead-rust/target/debug/deps/itoa-b2865fe037c8910d.d: /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/itoa-1.0.15/src/lib.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/itoa-1.0.15/src/udiv128.rs
/home/lloyd/projects/lead-rust/target/debug/deps/libitoa-b2865fe037c8910d.rmeta: /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/itoa-1.0.15/src/lib.rs /home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/itoa-1.0.15/src/udiv128.rs
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/itoa-1.0.15/src/lib.rs:
/home/lloyd/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/itoa-1.0.15/src/udiv128.rs:

View File

@@ -0,0 +1,9 @@
/home/lloyd/projects/lead-rust/target/debug/deps/lead_rust-79c563f084c6ab18.d: src/main.rs src/cell.rs src/evaluator.rs src/parser.rs src/tokenizer.rs
/home/lloyd/projects/lead-rust/target/debug/deps/liblead_rust-79c563f084c6ab18.rmeta: src/main.rs src/cell.rs src/evaluator.rs src/parser.rs src/tokenizer.rs
src/main.rs:
src/cell.rs:
src/evaluator.rs:
src/parser.rs:
src/tokenizer.rs:

Binary file not shown.

View File

@@ -0,0 +1,9 @@
/home/lloyd/projects/lead-rust/target/debug/deps/lead_rust-8715280d3338b630.d: src/main.rs src/cell.rs src/evaluator.rs src/parser.rs src/tokenizer.rs
/home/lloyd/projects/lead-rust/target/debug/deps/lead_rust-8715280d3338b630: src/main.rs src/cell.rs src/evaluator.rs src/parser.rs src/tokenizer.rs
src/main.rs:
src/cell.rs:
src/evaluator.rs:
src/parser.rs:
src/tokenizer.rs:

View File

@@ -0,0 +1,9 @@
/home/lloyd/projects/lead-rust/target/debug/deps/lead_rust-ac923cdbaa8c6285.d: src/main.rs src/cell.rs src/evaluator.rs src/parser.rs src/tokenizer.rs
/home/lloyd/projects/lead-rust/target/debug/deps/liblead_rust-ac923cdbaa8c6285.rmeta: src/main.rs src/cell.rs src/evaluator.rs src/parser.rs src/tokenizer.rs
src/main.rs:
src/cell.rs:
src/evaluator.rs:
src/parser.rs:
src/tokenizer.rs:

View File

@@ -0,0 +1,6 @@
/home/lloyd/projects/lead-rust/target/debug/deps/lead_rust-c5d8fd89dd3e5c59.d: src/main.rs src/tokenizer.rs
/home/lloyd/projects/lead-rust/target/debug/deps/liblead_rust-c5d8fd89dd3e5c59.rmeta: src/main.rs src/tokenizer.rs
src/main.rs:
src/tokenizer.rs:

View File

@@ -0,0 +1,6 @@
/home/lloyd/projects/lead-rust/target/debug/deps/lead_rust-d2081f88ebedd77c.d: src/main.rs src/tokenizer.rs
/home/lloyd/projects/lead-rust/target/debug/deps/liblead_rust-d2081f88ebedd77c.rmeta: src/main.rs src/tokenizer.rs
src/main.rs:
src/tokenizer.rs:

Binary file not shown.

View File

@@ -0,0 +1,7 @@
/home/lloyd/projects/lead-rust/target/debug/deps/lead_rust-f42cf83cbde4bc5a.d: src/main.rs src/parser.rs src/tokenizer.rs
/home/lloyd/projects/lead-rust/target/debug/deps/lead_rust-f42cf83cbde4bc5a: src/main.rs src/parser.rs src/tokenizer.rs
src/main.rs:
src/parser.rs:
src/tokenizer.rs:

Some files were not shown because too many files have changed in this diff Show More