nushell/crates/nu-utils/src/ctrl_c.rs
Reilly Wood e215fbbd08
Add helper method to check whether ctrl+c was pressed, adopt it (#7482)
I've been working on streaming and pipeline interruption lately. It was
bothering me that checking ctrl+c (something we want to do often) always
requires a bunch of boilerplate like:
```rust
use std::sync::atomic::Ordering;

if let Some(ctrlc) = &engine_state.ctrlc {
     if ctrlc.load(Ordering::SeqCst) {
          ...
```
I added a helper method to cut that down to:

```rust
if nu_utils::ctrl_c::was_pressed(&engine_state.ctrlc) {
    ...
```
2022-12-15 09:39:24 -08:00

13 lines
300 B
Rust

use std::sync::{
atomic::{AtomicBool, Ordering},
Arc,
};
/// Returns true if Nu has received a SIGINT signal / ctrl+c event
pub fn was_pressed(ctrlc: &Option<Arc<AtomicBool>>) -> bool {
if let Some(ctrlc) = ctrlc {
ctrlc.load(Ordering::SeqCst)
} else {
false
}
}