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}1use 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 /// Format of stack traces' display in console.31 /// `compact` format only shows `filename:line:column`s32 /// while `explaining` displays source code with attached trace annotations33 /// thus being more verbose.34 #[clap(long, possible_values = &["compact", "explaining"])]35 trace_format: Option<TraceFormatName>,36 /// Amount of stack trace elements to be displayed.37 /// If set to `0` then full stack trace will be displayed.38 #[clap(long, short = 't', default_value = "20")]39 max_trace: usize,40}41impl ConfigureState for TraceOpts {42 fn configure(&self, state: &EvaluationState) -> Result<()> {43 let resolver = PathResolver::Absolute;44 match self45 .trace_format46 .as_ref()47 .unwrap_or(&TraceFormatName::Compact)48 {49 TraceFormatName::Compact => state.set_trace_format(Box::new(CompactFormat {50 resolver,51 padding: 4,52 })),53 TraceFormatName::Explaining => {54 state.set_trace_format(Box::new(ExplainingFormat { resolver }))55 }56 }57 state.set_max_trace(self.max_trace);58 Ok(())59 }60}