difftreelog
docs Fix docs of trace.rs
in: master
1 file changed
crates/jrsonnet-cli/src/trace.rsdiffbeforeafterboth1use crate::ConfigureState;2use clap::Clap;3use jrsonnet_evaluator::{4 error::Result,5 trace::{CompactFormat, ExplainingFormat, PathResolver},6 EvaluationState,7};8use std::str::FromStr;910#[derive(PartialEq)]11pub enum TraceFormatName {12 Compact,13 Explaining,14}1516impl FromStr for TraceFormatName {17 type Err = &'static str;18 fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {19 Ok(match s {20 "compact" => TraceFormatName::Compact,21 "explaining" => TraceFormatName::Explaining,22 _ => return Err("no such format"),23 })24 }25}2627#[derive(Clap)]28// #[clap(help_heading = "STACK TRACE VISUAL")]29pub struct TraceOpts {30 /// How stack traces should be displayed in console.31 /// compact format only shows `filename:line:column`s, where explaining displays source code32 /// with attached trace annotations, so it is more verbose33 #[clap(long, possible_values = &["compact", "explaining"])]34 trace_format: Option<TraceFormatName>,35 /// Amount of stack trace elements to be displayed, if zero - then full stack trace will be displayed36 #[clap(long, short = 't', default_value = "20")]37 max_trace: usize,38}39impl ConfigureState for TraceOpts {40 fn configure(&self, state: &EvaluationState) -> Result<()> {41 let resolver = PathResolver::Absolute;42 match self43 .trace_format44 .as_ref()45 .unwrap_or(&TraceFormatName::Compact)46 {47 TraceFormatName::Compact => state.set_trace_format(Box::new(CompactFormat {48 resolver,49 padding: 4,50 })),51 TraceFormatName::Explaining => {52 state.set_trace_format(Box::new(ExplainingFormat { resolver }))53 }54 }55 state.set_max_trace(self.max_trace);56 Ok(())57 }58}