{"id":21986114,"url":"https://github.com/tamschi/mirror-mask","last_synced_at":"2026-05-06T05:40:44.272Z","repository":{"id":37883311,"uuid":"412876612","full_name":"Tamschi/mirror-mask","owner":"Tamschi","description":"A scoped signal forwarder.","archived":false,"fork":false,"pushed_at":"2025-01-13T05:07:41.000Z","size":156,"stargazers_count":1,"open_issues_count":7,"forks_count":0,"subscribers_count":3,"default_branch":"develop","last_synced_at":"2025-01-28T05:23:49.587Z","etag":null,"topics":["rust","signal","unix"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Tamschi.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE-APACHE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":"SECURITY.md","support":null},"funding":{"github":"Tamschi"}},"created_at":"2021-10-02T18:12:44.000Z","updated_at":"2024-12-13T20:22:29.000Z","dependencies_parsed_at":"2023-01-23T14:16:05.770Z","dependency_job_id":null,"html_url":"https://github.com/Tamschi/mirror-mask","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":"Tamschi/rust-template","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tamschi%2Fmirror-mask","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tamschi%2Fmirror-mask/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tamschi%2Fmirror-mask/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Tamschi%2Fmirror-mask/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Tamschi","download_url":"https://codeload.github.com/Tamschi/mirror-mask/tar.gz/refs/heads/develop","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":245044577,"owners_count":20551903,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rust","signal","unix"],"created_at":"2024-11-29T18:17:04.448Z","updated_at":"2026-05-06T05:40:44.238Z","avatar_url":"https://github.com/Tamschi.png","language":"Rust","funding_links":["https://github.com/sponsors/Tamschi"],"categories":[],"sub_categories":[],"readme":"# mirror-mask\n\n[![Lib.rs](https://img.shields.io/badge/Lib.rs-*-84f)](https://lib.rs/crates/mirror-mask)\n[![Crates.io](https://img.shields.io/crates/v/mirror-mask)](https://crates.io/crates/mirror-mask)\n[![Docs.rs](https://docs.rs/mirror-mask/badge.svg)](https://docs.rs/mirror-mask)\n\n![Rust 1.51](https://img.shields.io/static/v1?logo=Rust\u0026label=\u0026message=1.51\u0026color=grey)\n[![CI](https://github.com/Tamschi/mirror-mask/workflows/CI/badge.svg?branch=develop)](https://github.com/Tamschi/mirror-mask/actions?query=workflow%3ACI+branch%3Adevelop)\n![Crates.io - License](https://img.shields.io/crates/l/mirror-mask/0.0.1)\n\n[![GitHub](https://img.shields.io/static/v1?logo=GitHub\u0026label=\u0026message=%20\u0026color=grey)](https://github.com/Tamschi/mirror-mask)\n[![open issues](https://img.shields.io/github/issues-raw/Tamschi/mirror-mask)](https://github.com/Tamschi/mirror-mask/issues)\n[![open pull requests](https://img.shields.io/github/issues-pr-raw/Tamschi/mirror-mask)](https://github.com/Tamschi/mirror-mask/pulls)\n[![good first issues](https://img.shields.io/github/issues-raw/Tamschi/mirror-mask/good%20first%20issue?label=good+first+issues)](https://github.com/Tamschi/mirror-mask/contribute)\n\n[![crev reviews](https://web.crev.dev/rust-reviews/badge/crev_count/mirror-mask.svg)](https://web.crev.dev/rust-reviews/crate/mirror-mask/)\n\nA scoped signal deflector.\n\n(Unrelated to the 2005 fantasy film of similar name.)\n\nCurrent operating system support: Unix (via the `nix` crate).\n\nThe crate otherwise compiles without function,\nunless the `\"required\"` feature (active by default) is active.\n\n## Installation\n\nPlease use [cargo-edit](https://crates.io/crates/cargo-edit) to always add the latest version of this library:\n\n```cmd\ncargo add mirror-mask\n```\n\nIf your program does not rely on `mirror-mask` for correctness,\nyou can allow it to compile without function for unsupported targets.\n\n```cmd\ncargo add mirror-mask --no-default-features\n```\n\n## Example\n\n```rust\nlet mut child = std::process::Command\n  ::new(\"ping\")\n  .args([\"example.com\", \"-c\", \"3\"])\n  .spawn().unwrap();\n\n{\n  let _relay_guard = mirror_mask::Intent::InterruptFromKeyboard.relay_to_child(\u0026child); // \u003c--\n  child.wait().ok(); // Press Ctrl-c about here.\n}\n\nprintln!(\"Still alive!\");\n```\n\n## License\n\nLicensed under either of\n\n- Apache License, Version 2.0\n   ([LICENSE-APACHE](LICENSE-APACHE) or \u003chttp://www.apache.org/licenses/LICENSE-2.0\u003e)\n- MIT license\n   ([LICENSE-MIT](LICENSE-MIT) or \u003chttp://opensource.org/licenses/MIT\u003e)\n\nat your option.\n\n## Contribution\n\nUnless you explicitly state otherwise, any contribution intentionally submitted\nfor inclusion in the work by you, as defined in the Apache-2.0 license, shall be\ndual licensed as above, without any additional terms or conditions.\n\nSee [CONTRIBUTING](CONTRIBUTING.md) for more information.\n\n### Interactive Testing\n\nRun\n\n```bash\ncargo run --all-features\n```\n\nor\n\n```bash\ncargo run --all-features -- -r\n```\n\nand press (with `-r`/`--recursive` repeatedly Enter and then) Ctrl+c.\n\nThe program should exit gracefully.\n\n## [Code of Conduct](CODE_OF_CONDUCT.md)\n\n## [Changelog](CHANGELOG.md)\n\n## Versioning\n\n`mirror-mask` strictly follows [Semantic Versioning 2.0.0](https://semver.org/spec/v2.0.0.html) with the following exceptions:\n\n- The minor version will not reset to 0 on major version changes (except for v1).  \nConsider it the global feature level.\n- The patch version will not reset to 0 on major or minor version changes (except for v0.1 and v1).  \nConsider it the global patch level.\n\nThis includes the Rust version requirement specified above.  \nEarlier Rust versions may be compatible, but this can change with minor or patch releases.\n\nWhich versions are affected by features and patches can be determined from the respective headings in [CHANGELOG.md](CHANGELOG.md).\n\nNote that dependencies of this crate may have a more lenient MSRV policy!\nPlease use `cargo +nightly update -Z minimal-versions` in your automation if you don't generate Cargo.lock manually (or as necessary) and require support for a compiler older than current stable.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftamschi%2Fmirror-mask","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftamschi%2Fmirror-mask","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftamschi%2Fmirror-mask/lists"}