diff options
| author | Aleksey Kladov <aleksey.kladov@gmail.com> | 2021-04-20 22:54:05 +0300 |
|---|---|---|
| committer | Aleksey Kladov <aleksey.kladov@gmail.com> | 2021-04-20 22:54:05 +0300 |
| commit | cdfe5a8be01dd7427db734f17c5ec0de7bbe6c80 (patch) | |
| tree | ecc5755941360a672c5ef1f6a040fb9f03c4b7d7 /crates/stdx | |
| parent | ad131049c4cd1302af1a5616ff83d0e1f0cadea2 (diff) | |
| download | rust-cdfe5a8be01dd7427db734f17c5ec0de7bbe6c80.tar.gz rust-cdfe5a8be01dd7427db734f17c5ec0de7bbe6c80.zip | |
fix: no more Registering progress handler for token rustAnalyzer/Indexing failed.
Diffstat (limited to 'crates/stdx')
| -rw-r--r-- | crates/stdx/src/lib.rs | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/crates/stdx/src/lib.rs b/crates/stdx/src/lib.rs index e3eb109156c..857567a853a 100644 --- a/crates/stdx/src/lib.rs +++ b/crates/stdx/src/lib.rs @@ -179,6 +179,18 @@ where start..start + len } +pub fn defer<F: FnOnce()>(f: F) -> impl Drop { + struct D<F: FnOnce()>(Option<F>); + impl<F: FnOnce()> Drop for D<F> { + fn drop(&mut self) { + if let Some(f) = self.0.take() { + f() + } + } + } + D(Some(f)) +} + #[repr(transparent)] pub struct JodChild(pub std::process::Child); |
