updating templates to use error_stack and thiserror
This commit is contained in:
@@ -7,11 +7,13 @@ repository.workspace = true
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
|
||||
[dependencies]
|
||||
nom = { workspace = true }
|
||||
itertools = {workspace = true }
|
||||
error-stack = {workspace = true}
|
||||
nom.workspace = true
|
||||
itertools.workspace = true
|
||||
log.workspace = true
|
||||
error-stack.workspace = true
|
||||
thiserror.workspace = true
|
||||
|
||||
[dev-dependencies]
|
||||
test-log = {workspace=true}
|
||||
|
||||
test-log.workspace = true
|
||||
|
||||
@@ -3,10 +3,22 @@
|
||||
use {{ crate_name }}::part1;
|
||||
use {{ crate_name }}::part2;
|
||||
|
||||
fn main() {
|
||||
let input = include_str!("./input.txt");
|
||||
let part1_result = part1(input).expect("part 1 should have no error");
|
||||
println!("part 1: {part1_result}");
|
||||
let part2_result = part2(input).expect("part 2 should have no error");
|
||||
println!("part 2: {part2_result}");
|
||||
use error_stack::{Result, ResultExt};
|
||||
use thiserror::Error;
|
||||
|
||||
#[derive(Debug, Error)]
|
||||
enum {{ project-name | upper_camel_case }}Error {
|
||||
#[error("Part 1 failed")]
|
||||
Part1Error,
|
||||
#[error("Part 2 failed")]
|
||||
Part2Error,
|
||||
}
|
||||
|
||||
fn main() -> Result<(), {{ project-name | upper_camel_case }}Error> {
|
||||
let input = include_str!("./input.txt");
|
||||
let part1_result = part1(input).change_context({{ project-name | upper_camel_case }}Error::Part1Error)?;
|
||||
println!("part 1: {part1_result}");
|
||||
let part2_result = part2(input).change_context({{ project-name | upper_camel_case }}Error::Part2Error)?;
|
||||
println!("part 2: {part2_result}");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
@@ -1,19 +1,13 @@
|
||||
#![warn(clippy::all, clippy::pedantic)]
|
||||
|
||||
use std::fmt::Display;
|
||||
|
||||
use error_stack::{Context, Result};
|
||||
use error_stack::Result;
|
||||
use thiserror::Error;
|
||||
|
||||
// {{project-name}}
|
||||
#[derive(Debug)]
|
||||
pub struct {{project-name|upper_camel_case}}Part1Error;
|
||||
|
||||
impl Context for {{project-name|upper_camel_case}}Part1Error {}
|
||||
|
||||
impl Display for {{project-name|upper_camel_case}}Part1Error {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "day 1 part 1 error")
|
||||
}
|
||||
#[derive(Debug, Error)]
|
||||
pub enum {{ project-name | upper_camel_case }}Part1Error{
|
||||
#[error("Problem parsing {{ project-name | title_case }}")]
|
||||
ParseError,
|
||||
}
|
||||
|
||||
pub fn part1 (_input: &str) -> Result<String, {{ project-name | upper_camel_case }}Part1Error> {
|
||||
|
||||
@@ -1,18 +1,13 @@
|
||||
#![warn(clippy::all, clippy::pedantic)]
|
||||
|
||||
use std::fmt::Display;
|
||||
use error_stack::Result;
|
||||
use thiserror::Error;
|
||||
|
||||
use error_stack::{Context, Result};
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct {{ project-name | upper_camel_case }}Part2Error;
|
||||
|
||||
impl Context for {{ project-name | upper_camel_case }}Part2Error {}
|
||||
|
||||
impl Display for {{ project-name | upper_camel_case }}Part2Error {
|
||||
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
|
||||
write!(f, "day 1 part 1 error")
|
||||
}
|
||||
// {{project-name}}
|
||||
#[derive(Debug, Error)]
|
||||
pub enum {{ project-name | upper_camel_case }}Part2Error{
|
||||
#[error("Problem parsing {{project-name | title_case }}")]
|
||||
ParseError,
|
||||
}
|
||||
|
||||
pub fn part2 (_input: &str) -> Result<String, {{ project-name | upper_camel_case }}Part2Error> {
|
||||
|
||||
@@ -25,6 +25,7 @@ num-traits = "0.2.17"
|
||||
rustworkx-core = "0.13.2"
|
||||
pathfinding = "4.8.0"
|
||||
test-log = {version="0.2.14", features=["default", "unstable"]}
|
||||
thiserror = "1.0.56"
|
||||
|
||||
|
||||
[profile.dhat]
|
||||
|
||||
Reference in New Issue
Block a user