diff options
Diffstat (limited to 'crates')
-rw-r--r-- | crates/profile/Cargo.toml | 2 | ||||
-rw-r--r-- | crates/profile/src/lib.rs | 15 | ||||
-rw-r--r-- | crates/stdx/Cargo.toml | 5 | ||||
-rw-r--r-- | crates/stdx/src/lib.rs | 29 |
4 files changed, 26 insertions, 25 deletions
diff --git a/crates/profile/Cargo.toml b/crates/profile/Cargo.toml index c5dfdff32..4951f1835 100644 --- a/crates/profile/Cargo.toml +++ b/crates/profile/Cargo.toml | |||
@@ -13,7 +13,6 @@ doctest = false | |||
13 | once_cell = "1.3.1" | 13 | once_cell = "1.3.1" |
14 | cfg-if = "1" | 14 | cfg-if = "1" |
15 | libc = "0.2.73" | 15 | libc = "0.2.73" |
16 | backtrace = { version = "0.3.44", optional = true } | ||
17 | 16 | ||
18 | arena = { path = "../arena", version = "0.0.0" } | 17 | arena = { path = "../arena", version = "0.0.0" } |
19 | 18 | ||
@@ -24,5 +23,4 @@ perf-event = "0.4" | |||
24 | cpu_profiler = [] | 23 | cpu_profiler = [] |
25 | 24 | ||
26 | # Uncomment to enable for the whole crate graph | 25 | # Uncomment to enable for the whole crate graph |
27 | # default = [ "backtrace" ] | ||
28 | # default = [ "cpu_profiler" ] | 26 | # default = [ "cpu_profiler" ] |
diff --git a/crates/profile/src/lib.rs b/crates/profile/src/lib.rs index ab19271c7..aa6ccc36c 100644 --- a/crates/profile/src/lib.rs +++ b/crates/profile/src/lib.rs | |||
@@ -15,21 +15,6 @@ pub use crate::{ | |||
15 | stop_watch::{StopWatch, StopWatchSpan}, | 15 | stop_watch::{StopWatch, StopWatchSpan}, |
16 | }; | 16 | }; |
17 | 17 | ||
18 | /// Prints backtrace to stderr, useful for debugging. | ||
19 | #[cfg(feature = "backtrace")] | ||
20 | pub fn print_backtrace() { | ||
21 | let bt = backtrace::Backtrace::new(); | ||
22 | eprintln!("{:?}", bt); | ||
23 | } | ||
24 | #[cfg(not(feature = "backtrace"))] | ||
25 | pub fn print_backtrace() { | ||
26 | eprintln!( | ||
27 | r#"enable the backtrace feature: | ||
28 | profile = {{ path = "../profile", features = [ "backtrace"] }} | ||
29 | "# | ||
30 | ); | ||
31 | } | ||
32 | |||
33 | thread_local!(static IN_SCOPE: RefCell<bool> = RefCell::new(false)); | 18 | thread_local!(static IN_SCOPE: RefCell<bool> = RefCell::new(false)); |
34 | 19 | ||
35 | /// Allows to check if the current code is withing some dynamic scope, can be | 20 | /// Allows to check if the current code is withing some dynamic scope, can be |
diff --git a/crates/stdx/Cargo.toml b/crates/stdx/Cargo.toml index 8d7a51156..c47e8d0a8 100644 --- a/crates/stdx/Cargo.toml +++ b/crates/stdx/Cargo.toml | |||
@@ -10,4 +10,9 @@ edition = "2018" | |||
10 | doctest = false | 10 | doctest = false |
11 | 11 | ||
12 | [dependencies] | 12 | [dependencies] |
13 | backtrace = { version = "0.3.44", optional = true } | ||
13 | # Think twice before adding anything here | 14 | # Think twice before adding anything here |
15 | |||
16 | [features] | ||
17 | # Uncomment to enable for the whole crate graph | ||
18 | # default = [ "backtrace" ] | ||
diff --git a/crates/stdx/src/lib.rs b/crates/stdx/src/lib.rs index 13aab1451..d9a62e943 100644 --- a/crates/stdx/src/lib.rs +++ b/crates/stdx/src/lib.rs | |||
@@ -25,6 +25,27 @@ pub fn timeit(label: &'static str) -> impl Drop { | |||
25 | Guard { label, start: Instant::now() } | 25 | Guard { label, start: Instant::now() } |
26 | } | 26 | } |
27 | 27 | ||
28 | /// Prints backtrace to stderr, useful for debugging. | ||
29 | #[cfg(feature = "backtrace")] | ||
30 | pub fn print_backtrace() { | ||
31 | let bt = backtrace::Backtrace::new(); | ||
32 | eprintln!("{:?}", bt); | ||
33 | } | ||
34 | #[cfg(not(feature = "backtrace"))] | ||
35 | pub fn print_backtrace() { | ||
36 | eprintln!( | ||
37 | r#"Enable the backtrace feature. | ||
38 | Uncomment `default = [ "backtrace" ]` in `crates/stdx/Cargo.toml`. | ||
39 | "# | ||
40 | ); | ||
41 | } | ||
42 | |||
43 | pub fn to_lower_snake_case(s: &str) -> String { | ||
44 | to_snake_case(s, char::to_ascii_lowercase) | ||
45 | } | ||
46 | pub fn to_upper_snake_case(s: &str) -> String { | ||
47 | to_snake_case(s, char::to_ascii_uppercase) | ||
48 | } | ||
28 | fn to_snake_case<F: Fn(&char) -> char>(s: &str, change_case: F) -> String { | 49 | fn to_snake_case<F: Fn(&char) -> char>(s: &str, change_case: F) -> String { |
29 | let mut buf = String::with_capacity(s.len()); | 50 | let mut buf = String::with_capacity(s.len()); |
30 | let mut prev = false; | 51 | let mut prev = false; |
@@ -43,14 +64,6 @@ fn to_snake_case<F: Fn(&char) -> char>(s: &str, change_case: F) -> String { | |||
43 | buf | 64 | buf |
44 | } | 65 | } |
45 | 66 | ||
46 | pub fn to_lower_snake_case(s: &str) -> String { | ||
47 | to_snake_case(s, char::to_ascii_lowercase) | ||
48 | } | ||
49 | |||
50 | pub fn to_upper_snake_case(s: &str) -> String { | ||
51 | to_snake_case(s, char::to_ascii_uppercase) | ||
52 | } | ||
53 | |||
54 | pub fn replace(buf: &mut String, from: char, to: &str) { | 67 | pub fn replace(buf: &mut String, from: char, to: &str) { |
55 | if !buf.contains(from) { | 68 | if !buf.contains(from) { |
56 | return; | 69 | return; |