-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Open
Labels
A-attributesProposals relating to attributesProposals relating to attributesA-debuggingDebugging related proposals & ideasDebugging related proposals & ideasA-envEnvironment variable related proposals & ideasEnvironment variable related proposals & ideasT-compilerRelevant to the compiler team, which will review and decide on the RFC.Relevant to the compiler team, which will review and decide on the RFC.T-langRelevant to the language team, which will review and decide on the RFC.Relevant to the language team, which will review and decide on the RFC.
Description
It would be nice if we could rename the RUST_BACKTRACE
environment variable to something custom like MYCRATE_BACKTRACE
. This idea came to me from looking at env_logger
and how you can rename the environment variable it uses via from_env
.
I suggest something along the lines of this:
#![backtrace_env = "MYCRATE_BACKTRACE"]
fn main() {
// ...
}
And then enabling it via:
MYCRATE_BACKTRACE=1 ./mycrate
Supporting reasons:
- Gives some sense of consistency for end users who may not know what Rust is, where the current variable name may be confusing
- Some authors believe the end user has no business knowing what language their program was written in
- Backtraces may be enabled for some Rust programs but not all when executed in the same environment, such as in a shell script
mqudsi, fstirlitz, ArniDagur, Xymist and aloucks
Metadata
Metadata
Assignees
Labels
A-attributesProposals relating to attributesProposals relating to attributesA-debuggingDebugging related proposals & ideasDebugging related proposals & ideasA-envEnvironment variable related proposals & ideasEnvironment variable related proposals & ideasT-compilerRelevant to the compiler team, which will review and decide on the RFC.Relevant to the compiler team, which will review and decide on the RFC.T-langRelevant to the language team, which will review and decide on the RFC.Relevant to the language team, which will review and decide on the RFC.
Type
Projects
Milestone
Relationships
Development
Select code repository
Activity
SimonSapin commentedon Nov 24, 2018
If your crate is an executable, it could use
std::env::set_var
near the start of main to setRUST_BACKTRACE
based on some other env variable.nvzqz commentedon Nov 24, 2018
Right, but that doesn't change panics from spitting out the following:
I would like for it to suggest running
MYCRATE_BACKTRACE=1
instead. I know I can just catch panics inmain
and output my own message but it'd be nice to have that without so much boilerplate.sfackler commentedon Nov 25, 2018
You can use std::panic::set_hook to run whatever custom logic you want on panic.
mqudsi commentedon Dec 23, 2018
At the cost of taking consistency away from the rust ecosystem as a whole. I don't need to double-check that I've got the (difficult to read since it's all-caps) environment variable name correct each time I
cargo run
a project to see what the author decided to call their backtrace variable. Within the rust ecosystem, it's alwaysenv RUST_BACKTRACE=1 cargo run
, end of story.