]> git.lizzy.rs Git - rust.git/blobdiff - crates/stdx/src/lib.rs
Make printin the backtrace more convenient
[rust.git] / crates / stdx / src / lib.rs
index 13aab1451ec0b22d332e12082c7b69ef2bf4acbb..d9a62e943b68ae392d4767b85455efb7cb26cd9e 100644 (file)
@@ -25,6 +25,27 @@ fn drop(&mut self) {
     Guard { label, start: Instant::now() }
 }
 
+/// Prints backtrace to stderr, useful for debugging.
+#[cfg(feature = "backtrace")]
+pub fn print_backtrace() {
+    let bt = backtrace::Backtrace::new();
+    eprintln!("{:?}", bt);
+}
+#[cfg(not(feature = "backtrace"))]
+pub fn print_backtrace() {
+    eprintln!(
+        r#"Enable the backtrace feature.
+Uncomment `default = [ "backtrace" ]` in `crates/stdx/Cargo.toml`.
+"#
+    );
+}
+
+pub fn to_lower_snake_case(s: &str) -> String {
+    to_snake_case(s, char::to_ascii_lowercase)
+}
+pub fn to_upper_snake_case(s: &str) -> String {
+    to_snake_case(s, char::to_ascii_uppercase)
+}
 fn to_snake_case<F: Fn(&char) -> char>(s: &str, change_case: F) -> String {
     let mut buf = String::with_capacity(s.len());
     let mut prev = false;
@@ -43,14 +64,6 @@ fn to_snake_case<F: Fn(&char) -> char>(s: &str, change_case: F) -> String {
     buf
 }
 
-pub fn to_lower_snake_case(s: &str) -> String {
-    to_snake_case(s, char::to_ascii_lowercase)
-}
-
-pub fn to_upper_snake_case(s: &str) -> String {
-    to_snake_case(s, char::to_ascii_uppercase)
-}
-
 pub fn replace(buf: &mut String, from: char, to: &str) {
     if !buf.contains(from) {
         return;