You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

1 line
236 KiB
JSON

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

{"config":{"output_file":null,"full_docs":false,"pub_only":true,"reachable_only":true,"distro_crate":false,"signatures":false,"borrow_data":false},"version":"0.19.0","compilation":{"directory":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16","program":"/Users/prabhueshwarla/.rustup/toolchains/stable-x86_64-apple-darwin/bin/rls","arguments":["--crate-name","signal_hook","--edition=2018","/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","--json=diagnostic-rendered-ansi","--crate-type","lib","--emit=dep-info,metadata","-C","debuginfo=2","-C","metadata=e0628f0be09b0325","-C","extra-filename=-e0628f0be09b0325","--out-dir","/Users/prabhueshwarla/rust/author/packt/prod/chapter8/myshell/target/rls/debug/deps","-L","dependency=/Users/prabhueshwarla/rust/author/packt/prod/chapter8/myshell/target/rls/debug/deps","--extern","libc=/Users/prabhueshwarla/rust/author/packt/prod/chapter8/myshell/target/rls/debug/deps/liblibc-c6c7e72937a09c21.rmeta","--extern","signal_hook_registry=/Users/prabhueshwarla/rust/author/packt/prod/chapter8/myshell/target/rls/debug/deps/libsignal_hook_registry-e474ff654680bd11.rmeta","--cap-lints","allow","--error-format=json","--sysroot","/Users/prabhueshwarla/.rustup/toolchains/stable-x86_64-apple-darwin"],"output":"/Users/prabhueshwarla/rust/author/packt/prod/chapter8/myshell/target/rls/debug/deps/libsignal_hook-e0628f0be09b0325.rmeta"},"prelude":{"crate_id":{"name":"signal_hook","disambiguator":[12303876821733317447,5135724871097974139]},"crate_root":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src","external_crates":[{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":1,"id":{"name":"std","disambiguator":[9054049529852543209,5756799355281213394]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":2,"id":{"name":"core","disambiguator":[649336883146201894,3308516238322163950]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":3,"id":{"name":"compiler_builtins","disambiguator":[1154582834482060450,16344204990542480537]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":4,"id":{"name":"rustc_std_workspace_core","disambiguator":[9212379515936652129,17808485286264063370]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":5,"id":{"name":"alloc","disambiguator":[13327579764654116281,14306064291630426625]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":6,"id":{"name":"libc","disambiguator":[17773251733480933597,18239998491734583498]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":7,"id":{"name":"unwind","disambiguator":[8567743581675804787,15655200220621371766]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":8,"id":{"name":"cfg_if","disambiguator":[15115520782807859583,9813785573872252500]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":9,"id":{"name":"backtrace","disambiguator":[1572943810868196833,3902827232285166711]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":10,"id":{"name":"rustc_demangle","disambiguator":[6290371580101917419,15395902185345451181]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":11,"id":{"name":"backtrace_sys","disambiguator":[2934540361684350378,924291485644145262]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":12,"id":{"name":"hashbrown","disambiguator":[9277678418438935259,15657907931940784437]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":13,"id":{"name":"rustc_std_workspace_alloc","disambiguator":[5423566938548125357,18340948646597872466]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":14,"id":{"name":"panic_unwind","disambiguator":[489208416821938960,3305070343783546974]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":15,"id":{"name":"libc","disambiguator":[18326867955375269224,5324247810815223257]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":16,"id":{"name":"signal_hook_registry","disambiguator":[6370673610970023658,5854536714153180651]}},{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","num":17,"id":{"name":"arc_swap","disambiguator":[17779198299154035100,6875815130371589823]}}],"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":0,"byte_end":8756,"line_start":1,"line_end":188,"column_start":1,"column_end":72}},"imports":[{"kind":"Use","ref_id":{"krate":16,"index":74},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10247,"byte_end":10264,"line_start":34,"line_end":34,"column_start":31,"column_end":48},"alias_span":null,"name":"unregister_signal","value":"","parent":{"krate":0,"index":5}},{"kind":"Use","ref_id":{"krate":15,"index":1286},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8107,"byte_end":8114,"line_start":172,"line_end":172,"column_start":5,"column_end":12},"alias_span":null,"name":"SIGABRT","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":1292},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8116,"byte_end":8123,"line_start":172,"line_end":172,"column_start":14,"column_end":21},"alias_span":null,"name":"SIGALRM","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":652},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8125,"byte_end":8131,"line_start":172,"line_end":172,"column_start":23,"column_end":29},"alias_span":null,"name":"SIGBUS","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":651},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8133,"byte_end":8140,"line_start":172,"line_end":172,"column_start":31,"column_end":38},"alias_span":null,"name":"SIGCHLD","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":655},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8142,"byte_end":8149,"line_start":172,"line_end":172,"column_start":40,"column_end":47},"alias_span":null,"name":"SIGCONT","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":1288},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8151,"byte_end":8157,"line_start":172,"line_end":172,"column_start":49,"column_end":55},"alias_span":null,"name":"SIGFPE","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":1282},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8159,"byte_end":8165,"line_start":172,"line_end":172,"column_start":57,"column_end":63},"alias_span":null,"name":"SIGHUP","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":1285},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8167,"byte_end":8173,"line_start":172,"line_end":172,"column_start":65,"column_end":71},"alias_span":null,"name":"SIGILL","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":1283},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8175,"byte_end":8181,"line_start":172,"line_end":172,"column_start":73,"column_end":79},"alias_span":null,"name":"SIGINT","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":659},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8183,"byte_end":8188,"line_start":172,"line_end":172,"column_start":81,"column_end":86},"alias_span":null,"name":"SIGIO","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":1289},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8190,"byte_end":8197,"line_start":172,"line_end":172,"column_start":88,"column_end":95},"alias_span":null,"name":"SIGKILL","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":1291},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8203,"byte_end":8210,"line_start":173,"line_end":173,"column_start":5,"column_end":12},"alias_span":null,"name":"SIGPIPE","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":666},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8212,"byte_end":8219,"line_start":173,"line_end":173,"column_start":14,"column_end":21},"alias_span":null,"name":"SIGPROF","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":1284},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8221,"byte_end":8228,"line_start":173,"line_end":173,"column_start":23,"column_end":30},"alias_span":null,"name":"SIGQUIT","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":1290},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8230,"byte_end":8237,"line_start":173,"line_end":173,"column_start":32,"column_end":39},"alias_span":null,"name":"SIGSEGV","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":656},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8239,"byte_end":8246,"line_start":173,"line_end":173,"column_start":41,"column_end":48},"alias_span":null,"name":"SIGSTOP","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":660},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8248,"byte_end":8254,"line_start":173,"line_end":173,"column_start":50,"column_end":56},"alias_span":null,"name":"SIGSYS","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":1293},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8256,"byte_end":8263,"line_start":173,"line_end":173,"column_start":58,"column_end":65},"alias_span":null,"name":"SIGTERM","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":1567},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8265,"byte_end":8272,"line_start":173,"line_end":173,"column_start":67,"column_end":74},"alias_span":null,"name":"SIGTRAP","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":653},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8274,"byte_end":8281,"line_start":173,"line_end":173,"column_start":76,"column_end":83},"alias_span":null,"name":"SIGUSR1","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":654},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8283,"byte_end":8290,"line_start":173,"line_end":173,"column_start":85,"column_end":92},"alias_span":null,"name":"SIGUSR2","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":15,"index":667},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8296,"byte_end":8304,"line_start":174,"line_end":174,"column_start":5,"column_end":13},"alias_span":null,"name":"SIGWINCH","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":16,"index":58},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8716,"byte_end":8724,"line_start":188,"line_end":188,"column_start":32,"column_end":40},"alias_span":null,"name":"register","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":16,"index":73},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8726,"byte_end":8736,"line_start":188,"line_end":188,"column_start":42,"column_end":52},"alias_span":null,"name":"unregister","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":16,"index":101},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8738,"byte_end":8743,"line_start":188,"line_end":188,"column_start":54,"column_end":59},"alias_span":null,"name":"SigId","value":"","parent":{"krate":0,"index":0}},{"kind":"Use","ref_id":{"krate":16,"index":56},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8745,"byte_end":8754,"line_start":188,"line_end":188,"column_start":61,"column_end":70},"alias_span":null,"name":"FORBIDDEN","value":"","parent":{"krate":0,"index":0}}],"defs":[{"kind":"Mod","id":{"krate":0,"index":0},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":0,"byte_end":8756,"line_start":1,"line_end":188,"column_start":1,"column_end":72},"name":"","qualname":"::","value":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","parent":null,"children":[{"krate":0,"index":1},{"krate":0,"index":2},{"krate":0,"index":3},{"krate":0,"index":4},{"krate":0,"index":5},{"krate":0,"index":21},{"krate":0,"index":34},{"krate":0,"index":94},{"krate":0,"index":117},{"krate":0,"index":140}],"decl_id":null,"docs":" Library for easier and safe Unix signal handling","sig":null,"attributes":[{"value":"deny(missing_docs, warnings)","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":171,"byte_end":203,"line_start":6,"line_end":6,"column_start":1,"column_end":33}},{"value":"allow(unknown_lints, intra_doc_link_resolution_failure)","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":261,"byte_end":320,"line_start":8,"line_end":8,"column_start":1,"column_end":60}},{"value":"! Library for easier and safe Unix signal handling","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":321,"byte_end":373,"line_start":9,"line_end":9,"column_start":1,"column_end":53}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":374,"byte_end":377,"line_start":10,"line_end":10,"column_start":1,"column_end":4}},{"value":"! Unix signals are inherently hard to handle correctly, for several reasons:","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":378,"byte_end":456,"line_start":11,"line_end":11,"column_start":1,"column_end":79}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":457,"byte_end":460,"line_start":12,"line_end":12,"column_start":1,"column_end":4}},{"value":"! * They are a global resource. If a library wants to set its own signal handlers, it risks","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":461,"byte_end":554,"line_start":13,"line_end":13,"column_start":1,"column_end":94}},{"value":"! disturbing some other library. It is possible to chain the previous signal handler, but then","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":555,"byte_end":653,"line_start":14,"line_end":14,"column_start":1,"column_end":99}},{"value":"! it is impossible to remove the old signal handlers from the chains in any practical manner.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":654,"byte_end":751,"line_start":15,"line_end":15,"column_start":1,"column_end":98}},{"value":"! * They can be called from whatever thread, requiring synchronization. Also, as they can","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":752,"byte_end":843,"line_start":16,"line_end":16,"column_start":1,"column_end":92}},{"value":"! interrupt a thread at any time, making most handling race-prone.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":844,"byte_end":914,"line_start":17,"line_end":17,"column_start":1,"column_end":71}},{"value":"! * According to the POSIX standard, the set of functions one may call inside a signal handler is","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":915,"byte_end":1014,"line_start":18,"line_end":18,"column_start":1,"column_end":100}},{"value":"! limited to very few of them. To highlight, mutexes (or other locking mechanisms) and memory","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1015,"byte_end":1112,"line_start":19,"line_end":19,"column_start":1,"column_end":98}},{"value":"! allocation and deallocation is *not* allowed.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1113,"byte_end":1164,"line_start":20,"line_end":20,"column_start":1,"column_end":52}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1165,"byte_end":1168,"line_start":21,"line_end":21,"column_start":1,"column_end":4}},{"value":"! This library aims to solve some of the problems. It provides a global registry of actions","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1169,"byte_end":1262,"line_start":22,"line_end":22,"column_start":1,"column_end":94}},{"value":"! performed on arrival of signals. It is possible to register multiple actions for the same","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1263,"byte_end":1356,"line_start":23,"line_end":23,"column_start":1,"column_end":94}},{"value":"! signal and it is possible to remove the actions later on. If there was a previous signal","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1357,"byte_end":1449,"line_start":24,"line_end":24,"column_start":1,"column_end":93}},{"value":"! handler when the first action for a signal is registered, it is chained (but the original one","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1450,"byte_end":1547,"line_start":25,"line_end":25,"column_start":1,"column_end":98}},{"value":"! can't be removed).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1548,"byte_end":1570,"line_start":26,"line_end":26,"column_start":1,"column_end":23}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1571,"byte_end":1574,"line_start":27,"line_end":27,"column_start":1,"column_end":4}},{"value":"! The main function of the library is [`register`](fn.register.html).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1575,"byte_end":1646,"line_start":28,"line_end":28,"column_start":1,"column_end":72}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1647,"byte_end":1650,"line_start":29,"line_end":29,"column_start":1,"column_end":4}},{"value":"! It also offers several common actions one might want to register, implemented in the correct","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1651,"byte_end":1747,"line_start":30,"line_end":30,"column_start":1,"column_end":97}},{"value":"! way. They are scattered through submodules and have the same limitations and characteristics as","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1748,"byte_end":1847,"line_start":31,"line_end":31,"column_start":1,"column_end":100}},{"value":"! the [`register`](fn.register.html) function. Generally, they work to postpone the action taken","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1848,"byte_end":1946,"line_start":32,"line_end":32,"column_start":1,"column_end":99}},{"value":"! outside of the signal handler, where the full freedom and power of rust is available.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":1947,"byte_end":2036,"line_start":33,"line_end":33,"column_start":1,"column_end":90}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2037,"byte_end":2040,"line_start":34,"line_end":34,"column_start":1,"column_end":4}},{"value":"! Unlike other Rust libraries for signal handling, this should be flexible enough to handle all","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2041,"byte_end":2138,"line_start":35,"line_end":35,"column_start":1,"column_end":98}},{"value":"! the common and useful patterns.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2139,"byte_end":2174,"line_start":36,"line_end":36,"column_start":1,"column_end":36}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2175,"byte_end":2178,"line_start":37,"line_end":37,"column_start":1,"column_end":4}},{"value":"! The library avoids all the newer fancy signal-handling routines. These generally have two","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2179,"byte_end":2272,"line_start":38,"line_end":38,"column_start":1,"column_end":94}},{"value":"! downsides:","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2273,"byte_end":2287,"line_start":39,"line_end":39,"column_start":1,"column_end":15}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2288,"byte_end":2291,"line_start":40,"line_end":40,"column_start":1,"column_end":4}},{"value":"! * They are not fully portable, therefore the library would have to contain *both* the","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2292,"byte_end":2381,"line_start":41,"line_end":41,"column_start":1,"column_end":90}},{"value":"! implementation using the basic routines and the fancy ones. As signal handling is not on the","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2382,"byte_end":2480,"line_start":42,"line_end":42,"column_start":1,"column_end":99}},{"value":"! hot path of most programs, this would not bring any actual benefit.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2481,"byte_end":2554,"line_start":43,"line_end":43,"column_start":1,"column_end":74}},{"value":"! * The other routines require that the given signal is masked in all application's threads. As","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2555,"byte_end":2652,"line_start":44,"line_end":44,"column_start":1,"column_end":98}},{"value":"! the signals are not masked by default and a new thread inherits the signal mask of its","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2653,"byte_end":2745,"line_start":45,"line_end":45,"column_start":1,"column_end":93}},{"value":"! parent, it is possible to guarantee such global mask by masking them before any threads","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2746,"byte_end":2839,"line_start":46,"line_end":46,"column_start":1,"column_end":94}},{"value":"! start. While this is possible for an application developer to do, it is not possible for a","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2840,"byte_end":2936,"line_start":47,"line_end":47,"column_start":1,"column_end":97}},{"value":"! a library.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2937,"byte_end":2953,"line_start":48,"line_end":48,"column_start":1,"column_end":17}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2954,"byte_end":2957,"line_start":49,"line_end":49,"column_start":1,"column_end":4}},{"value":"! # Warning","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2958,"byte_end":2971,"line_start":50,"line_end":50,"column_start":1,"column_end":14}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2972,"byte_end":2975,"line_start":51,"line_end":51,"column_start":1,"column_end":4}},{"value":"! Even with this library, you should thread with care. It does not eliminate all the problems","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":2976,"byte_end":3071,"line_start":52,"line_end":52,"column_start":1,"column_end":96}},{"value":"! mentioned above.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3072,"byte_end":3092,"line_start":53,"line_end":53,"column_start":1,"column_end":21}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3093,"byte_end":3096,"line_start":54,"line_end":54,"column_start":1,"column_end":4}},{"value":"! Also, note that the OS may collate multiple instances of the same signal into just one call of","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3097,"byte_end":3195,"line_start":55,"line_end":55,"column_start":1,"column_end":99}},{"value":"! the signal handler. Furthermore, some abstractions implemented here also naturally collate","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3196,"byte_end":3290,"line_start":56,"line_end":56,"column_start":1,"column_end":95}},{"value":"! multiple instances of the same signal. The general guarantee is, if there was at least one","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3291,"byte_end":3385,"line_start":57,"line_end":57,"column_start":1,"column_end":95}},{"value":"! signal of the given number delivered, an action will be taken, but it is not specified how many","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3386,"byte_end":3485,"line_start":58,"line_end":58,"column_start":1,"column_end":100}},{"value":"! times signals work mostly as kind of „wake up now“ nudge, if the application is slow to wake","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3486,"byte_end":3590,"line_start":59,"line_end":59,"column_start":1,"column_end":99}},{"value":"! up, it may be nudged multiple times before it does so.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3591,"byte_end":3649,"line_start":60,"line_end":60,"column_start":1,"column_end":59}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3650,"byte_end":3653,"line_start":61,"line_end":61,"column_start":1,"column_end":4}},{"value":"! # Signal limitations","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3654,"byte_end":3678,"line_start":62,"line_end":62,"column_start":1,"column_end":25}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3679,"byte_end":3682,"line_start":63,"line_end":63,"column_start":1,"column_end":4}},{"value":"! OS limits still apply it is not possible to redefine certain signals (eg. `SIGKILL` or","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3683,"byte_end":3777,"line_start":64,"line_end":64,"column_start":1,"column_end":93}},{"value":"! `SIGSTOP`) and it is probably a *very* stupid idea to touch certain other ones (`SIGSEGV`,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3778,"byte_end":3872,"line_start":65,"line_end":65,"column_start":1,"column_end":95}},{"value":"! `SIGFPE`, `SIGILL`). Therefore, this library will panic if any attempt at manipulating these is","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3873,"byte_end":3972,"line_start":66,"line_end":66,"column_start":1,"column_end":100}},{"value":"! made. There are some use cases for redefining the latter ones, but these are not well served by","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":3973,"byte_end":4072,"line_start":67,"line_end":67,"column_start":1,"column_end":100}},{"value":"! this library and you really *really* have to know what you're doing and are generally on your","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4073,"byte_end":4170,"line_start":68,"line_end":68,"column_start":1,"column_end":98}},{"value":"! own doing that.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4171,"byte_end":4190,"line_start":69,"line_end":69,"column_start":1,"column_end":20}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4191,"byte_end":4194,"line_start":70,"line_end":70,"column_start":1,"column_end":4}},{"value":"! # Signal masks","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4195,"byte_end":4213,"line_start":71,"line_end":71,"column_start":1,"column_end":19}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4214,"byte_end":4217,"line_start":72,"line_end":72,"column_start":1,"column_end":4}},{"value":"! As the library uses `sigaction` under the hood, signal masking works as expected (eg. with","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4218,"byte_end":4312,"line_start":73,"line_end":73,"column_start":1,"column_end":95}},{"value":"! `pthread_sigmask`). This means, signals will *not* be delivered if the signal is masked in all","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4313,"byte_end":4411,"line_start":74,"line_end":74,"column_start":1,"column_end":99}},{"value":"! program's threads.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4412,"byte_end":4434,"line_start":75,"line_end":75,"column_start":1,"column_end":23}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4435,"byte_end":4438,"line_start":76,"line_end":76,"column_start":1,"column_end":4}},{"value":"! By the way, if you do want to modify the signal mask (or do other Unix-specific magic), the","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4439,"byte_end":4534,"line_start":77,"line_end":77,"column_start":1,"column_end":96}},{"value":"! [nix](https://crates.io/crates/nix) crate offers safe interface to many low-level functions,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4535,"byte_end":4631,"line_start":78,"line_end":78,"column_start":1,"column_end":97}},{"value":"! including","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4632,"byte_end":4645,"line_start":79,"line_end":79,"column_start":1,"column_end":14}},{"value":"! [`pthread_sigmask`](https://docs.rs/nix/0.11.0/nix/sys/signal/fn.pthread_sigmask.html).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4646,"byte_end":4737,"line_start":80,"line_end":80,"column_start":1,"column_end":92}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4738,"byte_end":4741,"line_start":81,"line_end":81,"column_start":1,"column_end":4}},{"value":"! # Portability","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4742,"byte_end":4759,"line_start":82,"line_end":82,"column_start":1,"column_end":18}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4760,"byte_end":4763,"line_start":83,"line_end":83,"column_start":1,"column_end":4}},{"value":"! It should work on any POSIX.1-2001 system, which are all the major big OSes with the notable","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4764,"byte_end":4860,"line_start":84,"line_end":84,"column_start":1,"column_end":97}},{"value":"! exception of Windows.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4861,"byte_end":4886,"line_start":85,"line_end":85,"column_start":1,"column_end":26}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4887,"byte_end":4890,"line_start":86,"line_end":86,"column_start":1,"column_end":4}},{"value":"! Non-standard signals are also supported. Pass the signal value directly from `libc` or use","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4891,"byte_end":4985,"line_start":87,"line_end":87,"column_start":1,"column_end":95}},{"value":"! the numeric value directly.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":4986,"byte_end":5017,"line_start":88,"line_end":88,"column_start":1,"column_end":32}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5018,"byte_end":5021,"line_start":89,"line_end":89,"column_start":1,"column_end":4}},{"value":"! ```rust","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5022,"byte_end":5033,"line_start":90,"line_end":90,"column_start":1,"column_end":12}},{"value":"! use std::sync::Arc;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5034,"byte_end":5057,"line_start":91,"line_end":91,"column_start":1,"column_end":24}},{"value":"! use std::sync::atomic::{AtomicBool};","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5058,"byte_end":5098,"line_start":92,"line_end":92,"column_start":1,"column_end":41}},{"value":"! let term = Arc::new(AtomicBool::new(false));","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5099,"byte_end":5147,"line_start":93,"line_end":93,"column_start":1,"column_end":49}},{"value":"! let _ = signal_hook::flag::register(libc::SIGINT, Arc::clone(&term));","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5148,"byte_end":5221,"line_start":94,"line_end":94,"column_start":1,"column_end":74}},{"value":"! ```","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5222,"byte_end":5229,"line_start":95,"line_end":95,"column_start":1,"column_end":8}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5230,"byte_end":5233,"line_start":96,"line_end":96,"column_start":1,"column_end":4}},{"value":"! This crate includes a limited support for Windows, based on `signal`/`raise` in the CRT.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5234,"byte_end":5326,"line_start":97,"line_end":97,"column_start":1,"column_end":93}},{"value":"! There are differences in both API and behavior:","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5327,"byte_end":5378,"line_start":98,"line_end":98,"column_start":1,"column_end":52}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5379,"byte_end":5382,"line_start":99,"line_end":99,"column_start":1,"column_end":4}},{"value":"! - `iterator` and `pipe` are not yet implemented.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5383,"byte_end":5435,"line_start":100,"line_end":100,"column_start":1,"column_end":53}},{"value":"! - We have only a few signals: `SIGABRT`, `SIGABRT_COMPAT`, `SIGBREAK`,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5436,"byte_end":5510,"line_start":101,"line_end":101,"column_start":1,"column_end":75}},{"value":"! `SIGFPE`, `SIGILL`, `SIGINT`, `SIGSEGV` and `SIGTERM`.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5511,"byte_end":5571,"line_start":102,"line_end":102,"column_start":1,"column_end":61}},{"value":"! - Due to lack of signal blocking, there's a race condition.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5572,"byte_end":5635,"line_start":103,"line_end":103,"column_start":1,"column_end":64}},{"value":"! After the call to `signal`, there's a moment where we miss a signal.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5636,"byte_end":5710,"line_start":104,"line_end":104,"column_start":1,"column_end":75}},{"value":"! That means when you register a handler, there may be a signal which invokes","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5711,"byte_end":5792,"line_start":105,"line_end":105,"column_start":1,"column_end":82}},{"value":"! neither the default handler or the handler you register.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5793,"byte_end":5855,"line_start":106,"line_end":106,"column_start":1,"column_end":63}},{"value":"! - Handlers registered by `signal` in Windows are cleared on first signal.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5856,"byte_end":5933,"line_start":107,"line_end":107,"column_start":1,"column_end":78}},{"value":"! To match behavior in other platforms, we re-register the handler each time the handler is","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":5934,"byte_end":6029,"line_start":108,"line_end":108,"column_start":1,"column_end":96}},{"value":"! called, but there's a moment where we miss a handler.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6030,"byte_end":6089,"line_start":109,"line_end":109,"column_start":1,"column_end":60}},{"value":"! That means when you receive two signals in a row, there may be a signal which invokes","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6090,"byte_end":6181,"line_start":110,"line_end":110,"column_start":1,"column_end":92}},{"value":"! the default handler, nevertheless you certainly have registered the handler.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6182,"byte_end":6264,"line_start":111,"line_end":111,"column_start":1,"column_end":83}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6265,"byte_end":6268,"line_start":112,"line_end":112,"column_start":1,"column_end":4}},{"value":"! Moreover, signals won't work as you expected. `SIGTERM` isn't actually used and","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6269,"byte_end":6352,"line_start":113,"line_end":113,"column_start":1,"column_end":84}},{"value":"! not all `Ctrl-C`s are turned into `SIGINT`.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6353,"byte_end":6400,"line_start":114,"line_end":114,"column_start":1,"column_end":48}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6401,"byte_end":6404,"line_start":115,"line_end":115,"column_start":1,"column_end":4}},{"value":"! Patches to improve Windows support in this library are welcome.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6405,"byte_end":6472,"line_start":116,"line_end":116,"column_start":1,"column_end":68}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6473,"byte_end":6476,"line_start":117,"line_end":117,"column_start":1,"column_end":4}},{"value":"! # Examples","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6477,"byte_end":6491,"line_start":118,"line_end":118,"column_start":1,"column_end":15}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6492,"byte_end":6495,"line_start":119,"line_end":119,"column_start":1,"column_end":4}},{"value":"! ```rust","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6496,"byte_end":6507,"line_start":120,"line_end":120,"column_start":1,"column_end":12}},{"value":"! extern crate signal_hook;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6508,"byte_end":6537,"line_start":121,"line_end":121,"column_start":1,"column_end":30}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6538,"byte_end":6541,"line_start":122,"line_end":122,"column_start":1,"column_end":4}},{"value":"! use std::io::Error;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6542,"byte_end":6565,"line_start":123,"line_end":123,"column_start":1,"column_end":24}},{"value":"! use std::sync::Arc;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6566,"byte_end":6589,"line_start":124,"line_end":124,"column_start":1,"column_end":24}},{"value":"! use std::sync::atomic::{AtomicBool, Ordering};","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6590,"byte_end":6640,"line_start":125,"line_end":125,"column_start":1,"column_end":51}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6641,"byte_end":6644,"line_start":126,"line_end":126,"column_start":1,"column_end":4}},{"value":"! fn main() -> Result<(), Error> {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6645,"byte_end":6681,"line_start":127,"line_end":127,"column_start":1,"column_end":37}},{"value":"! let term = Arc::new(AtomicBool::new(false));","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6682,"byte_end":6734,"line_start":128,"line_end":128,"column_start":1,"column_end":53}},{"value":"! signal_hook::flag::register(signal_hook::SIGTERM, Arc::clone(&term))?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6735,"byte_end":6813,"line_start":129,"line_end":129,"column_start":1,"column_end":79}},{"value":"! while !term.load(Ordering::Relaxed) {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6814,"byte_end":6859,"line_start":130,"line_end":130,"column_start":1,"column_end":46}},{"value":"! // Do some time-limited stuff here","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6860,"byte_end":6906,"line_start":131,"line_end":131,"column_start":1,"column_end":47}},{"value":"! // (if this could block forever, then there's no guarantee the signal will have any","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":6907,"byte_end":7002,"line_start":132,"line_end":132,"column_start":1,"column_end":96}},{"value":"! // effect).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7003,"byte_end":7026,"line_start":133,"line_end":133,"column_start":1,"column_end":24}},{"value":"! #","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7027,"byte_end":7032,"line_start":134,"line_end":134,"column_start":1,"column_end":6}},{"value":"! # // Hack to terminate the example, not part of the real code.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7033,"byte_end":7105,"line_start":135,"line_end":135,"column_start":1,"column_end":73}},{"value":"! # term.store(true, Ordering::Relaxed);","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7106,"byte_end":7154,"line_start":136,"line_end":136,"column_start":1,"column_end":49}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7155,"byte_end":7164,"line_start":137,"line_end":137,"column_start":1,"column_end":10}},{"value":"! Ok(())","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7165,"byte_end":7179,"line_start":138,"line_end":138,"column_start":1,"column_end":15}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7180,"byte_end":7185,"line_start":139,"line_end":139,"column_start":1,"column_end":6}},{"value":"! ```","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7186,"byte_end":7193,"line_start":140,"line_end":140,"column_start":1,"column_end":8}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7194,"byte_end":7197,"line_start":141,"line_end":141,"column_start":1,"column_end":4}},{"value":"! # Features","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7198,"byte_end":7212,"line_start":142,"line_end":142,"column_start":1,"column_end":15}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7213,"byte_end":7216,"line_start":143,"line_end":143,"column_start":1,"column_end":4}},{"value":"! * `mio-support`: The [`Signals` iterator](iterator/struct.Signals.html) becomes pluggable into","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7217,"byte_end":7315,"line_start":144,"line_end":144,"column_start":1,"column_end":99}},{"value":"! mio 0.6.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7316,"byte_end":7330,"line_start":145,"line_end":145,"column_start":1,"column_end":15}},{"value":"! * `mio-0_7-support`: The [`Signals` iterator](iterator/struct.Signals.html) becomes pluggable into","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7331,"byte_end":7433,"line_start":146,"line_end":146,"column_start":1,"column_end":103}},{"value":"! mio 0.7.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7434,"byte_end":7448,"line_start":147,"line_end":147,"column_start":1,"column_end":15}},{"value":"! * `tokio-support`: The [`Signals`](iterator/struct.Signals.html) can be turned into","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7449,"byte_end":7536,"line_start":148,"line_end":148,"column_start":1,"column_end":88}},{"value":"! [`Async`](iterator/struct.Async.html), which provides a `Stream` interface for integration in","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7537,"byte_end":7636,"line_start":149,"line_end":149,"column_start":1,"column_end":100}},{"value":"! the asynchronous world.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7637,"byte_end":7666,"line_start":150,"line_end":150,"column_start":1,"column_end":30}}]},{"kind":"Mod","id":{"krate":0,"index":5},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1},"name":"cleanup","qualname":"::cleanup","value":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","parent":null,"children":[{"krate":0,"index":6},{"krate":0,"index":7},{"krate":0,"index":8},{"krate":0,"index":12},{"krate":0,"index":13},{"krate":0,"index":14},{"krate":0,"index":15},{"krate":0,"index":16},{"krate":0,"index":17},{"krate":0,"index":19}],"decl_id":null,"docs":" Cleaning up signals.","sig":null,"attributes":[{"value":"! Cleaning up signals.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":8758,"byte_end":8782,"line_start":1,"line_end":1,"column_start":1,"column_end":25}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":8783,"byte_end":8786,"line_start":2,"line_end":2,"column_start":1,"column_end":4}},{"value":"! The routines in this module allow resetting the signals of an application back to defaults.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":8787,"byte_end":8882,"line_start":3,"line_end":3,"column_start":1,"column_end":96}},{"value":"! This is intended for the following situation:","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":8883,"byte_end":8932,"line_start":4,"line_end":4,"column_start":1,"column_end":50}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":8933,"byte_end":8936,"line_start":5,"line_end":5,"column_start":1,"column_end":4}},{"value":"! * A terminal signal (eg. a `SIGTERM`, `SIGINT` or something similar) is received.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":8937,"byte_end":9022,"line_start":6,"line_end":6,"column_start":1,"column_end":86}},{"value":"! * The application resets the signal handlers to defaults.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9023,"byte_end":9084,"line_start":7,"line_end":7,"column_start":1,"column_end":62}},{"value":"! * The application proceeds to perform some kind of shutdown (saving data, cleaning up, ...).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9085,"byte_end":9181,"line_start":8,"line_end":8,"column_start":1,"column_end":97}},{"value":"! * If another such signal is received, the application is terminated right away the hard way,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9182,"byte_end":9278,"line_start":9,"line_end":9,"column_start":1,"column_end":97}},{"value":"! without finishing the shutdown.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9279,"byte_end":9316,"line_start":10,"line_end":10,"column_start":1,"column_end":38}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9317,"byte_end":9320,"line_start":11,"line_end":11,"column_start":1,"column_end":4}},{"value":"! The alternative of leaving the original signals in place might be problematic in case the","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9321,"byte_end":9414,"line_start":12,"line_end":12,"column_start":1,"column_end":94}},{"value":"! shutdown takes a long time or when it gets stuck. In such case the application would appear to","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9415,"byte_end":9513,"line_start":13,"line_end":13,"column_start":1,"column_end":99}},{"value":"! ignore the signal and just refuse to die.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9514,"byte_end":9559,"line_start":14,"line_end":14,"column_start":1,"column_end":46}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9560,"byte_end":9563,"line_start":15,"line_end":15,"column_start":1,"column_end":4}},{"value":"! There are two ways to perform the reset:","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9564,"byte_end":9608,"line_start":16,"line_end":16,"column_start":1,"column_end":45}},{"value":"! * Registering the reset as part of the signal handlers. This is more reliable (even in case the","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9609,"byte_end":9708,"line_start":17,"line_end":17,"column_start":1,"column_end":100}},{"value":"! application is already stuck in some kind of infinite loop, it would still work). This is","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9709,"byte_end":9804,"line_start":18,"line_end":18,"column_start":1,"column_end":96}},{"value":"! done by [register].","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9805,"byte_end":9830,"line_start":19,"line_end":19,"column_start":1,"column_end":26}},{"value":"! * Manually resetting the handlers just before the shutdown. This is done with [cleanup_signal].","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":9831,"byte_end":9930,"line_start":20,"line_end":20,"column_start":1,"column_end":100}}]},{"kind":"Function","id":{"krate":0,"index":15},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11336,"byte_end":11347,"line_start":58,"line_end":58,"column_start":8,"column_end":19},"name":"cleanup_raw","qualname":"::cleanup::cleanup_raw","value":"fn (signal: c_int) -> sighandler_t","parent":null,"children":[],"decl_id":null,"docs":" Resets the signal handler to the default one.","sig":null,"attributes":[{"value":"/ Resets the signal handler to the default one.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10286,"byte_end":10335,"line_start":38,"line_end":38,"column_start":1,"column_end":50}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10336,"byte_end":10339,"line_start":39,"line_end":39,"column_start":1,"column_end":4}},{"value":"/ This is the lowest level wrapper around resetting the signal handler to the OS default. It","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10340,"byte_end":10434,"line_start":40,"line_end":40,"column_start":1,"column_end":95}},{"value":"/ doesn't remove the hooks (though they will not get called), it doesn't handle errors and it","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10435,"byte_end":10530,"line_start":41,"line_end":41,"column_start":1,"column_end":96}},{"value":"/ doesn't return any previous chained signals. The hooks will simply stay registered but dormant.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10531,"byte_end":10630,"line_start":42,"line_end":42,"column_start":1,"column_end":100}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10631,"byte_end":10634,"line_start":43,"line_end":43,"column_start":1,"column_end":4}},{"value":"/ This function is async-signal-safe. However, you might prefer to use either [cleanup_signal] or","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10635,"byte_end":10734,"line_start":44,"line_end":44,"column_start":1,"column_end":100}},{"value":"/ [register].","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10735,"byte_end":10750,"line_start":45,"line_end":45,"column_start":1,"column_end":16}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10751,"byte_end":10754,"line_start":46,"line_end":46,"column_start":1,"column_end":4}},{"value":"/ # Warning","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10755,"byte_end":10768,"line_start":47,"line_end":47,"column_start":1,"column_end":14}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10769,"byte_end":10772,"line_start":48,"line_end":48,"column_start":1,"column_end":4}},{"value":"/ This action is irreversible, once called, registering more hooks for the same signal will have","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10773,"byte_end":10871,"line_start":49,"line_end":49,"column_start":1,"column_end":99}},{"value":"/ no effect (neither the old nor the new ones will be active but the registration will appear to","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10872,"byte_end":10970,"line_start":50,"line_end":50,"column_start":1,"column_end":99}},{"value":"/ have succeeded).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10971,"byte_end":10991,"line_start":51,"line_end":51,"column_start":1,"column_end":21}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10992,"byte_end":10995,"line_start":52,"line_end":52,"column_start":1,"column_end":4}},{"value":"/ This behaviour **can change** in future versions without considering it a breaking change.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":10996,"byte_end":11090,"line_start":53,"line_end":53,"column_start":1,"column_end":95}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11091,"byte_end":11094,"line_start":54,"line_end":54,"column_start":1,"column_end":4}},{"value":"/ In other words, this is expected to be called only before terminating the application and no","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11095,"byte_end":11191,"line_start":55,"line_end":55,"column_start":1,"column_end":97}},{"value":"/ further manipulation of the given signal is supported in any way. While it won't cause UB, it","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11192,"byte_end":11289,"line_start":56,"line_end":56,"column_start":1,"column_end":98}},{"value":"/ *will* produce unexpected results.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11290,"byte_end":11328,"line_start":57,"line_end":57,"column_start":1,"column_end":39}}]},{"kind":"Function","id":{"krate":0,"index":16},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13586,"byte_end":13600,"line_start":114,"line_end":114,"column_start":8,"column_end":22},"name":"cleanup_signal","qualname":"::cleanup::cleanup_signal","value":"fn (signal: c_int) -> Result<(), Error>","parent":null,"children":[],"decl_id":null,"docs":" Resets the signal handler to the default one and removes all its hooks.","sig":null,"attributes":[{"value":"/ Resets the signal handler to the default one and removes all its hooks.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11431,"byte_end":11506,"line_start":62,"line_end":62,"column_start":1,"column_end":76}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11507,"byte_end":11510,"line_start":63,"line_end":63,"column_start":1,"column_end":4}},{"value":"/ This resets the signal to the OS default. It doesn't revert to calling any previous signal","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11511,"byte_end":11605,"line_start":64,"line_end":64,"column_start":1,"column_end":95}},{"value":"/ handlers (the ones not handled by `signal-hook`). All the hooks registered for this signal are","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11606,"byte_end":11704,"line_start":65,"line_end":65,"column_start":1,"column_end":99}},{"value":"/ removed.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11705,"byte_end":11717,"line_start":66,"line_end":66,"column_start":1,"column_end":13}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11718,"byte_end":11721,"line_start":67,"line_end":67,"column_start":1,"column_end":4}},{"value":"/ The intended use case is making sure further instances of a terminal signal have immediate","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11722,"byte_end":11816,"line_start":68,"line_end":68,"column_start":1,"column_end":95}},{"value":"/ effect. If eg. a CTRL+C is pressed, the application removes all signal handling and proceeds to","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11817,"byte_end":11916,"line_start":69,"line_end":69,"column_start":1,"column_end":100}},{"value":"/ its own shutdown phase. If the shutdown phase takes too long or gets stuck, the user may press","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":11917,"byte_end":12015,"line_start":70,"line_end":70,"column_start":1,"column_end":99}},{"value":"/ CTRL+C again which will then kill the application immediately, by a default signal action.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12016,"byte_end":12110,"line_start":71,"line_end":71,"column_start":1,"column_end":95}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12111,"byte_end":12114,"line_start":72,"line_end":72,"column_start":1,"column_end":4}},{"value":"/ # Warning","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12115,"byte_end":12128,"line_start":73,"line_end":73,"column_start":1,"column_end":14}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12129,"byte_end":12132,"line_start":74,"line_end":74,"column_start":1,"column_end":4}},{"value":"/ This action is *global* (affecting hooks some other library or unrelated part of program","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12133,"byte_end":12225,"line_start":75,"line_end":75,"column_start":1,"column_end":93}},{"value":"/ registered) and *irreversible*. Once called, registering new hooks for this signal has no","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12226,"byte_end":12319,"line_start":76,"line_end":76,"column_start":1,"column_end":94}},{"value":"/ further effect (they'll appear to be registered, but they won't be called by the signal). The","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12320,"byte_end":12417,"line_start":77,"line_end":77,"column_start":1,"column_end":98}},{"value":"/ latter may change in the future and it won't be considered a breaking change.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12418,"byte_end":12499,"line_start":78,"line_end":78,"column_start":1,"column_end":82}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12500,"byte_end":12503,"line_start":79,"line_end":79,"column_start":1,"column_end":4}},{"value":"/ In other words, this is expected to be called only once the application enters its terminal","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12504,"byte_end":12599,"line_start":80,"line_end":80,"column_start":1,"column_end":96}},{"value":"/ state and is not supported otherwise.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12600,"byte_end":12641,"line_start":81,"line_end":81,"column_start":1,"column_end":42}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12642,"byte_end":12645,"line_start":82,"line_end":82,"column_start":1,"column_end":4}},{"value":"/ The function is **not** async-signal-safe. See [register] and [cleanup_raw] if you intend to","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12646,"byte_end":12742,"line_start":83,"line_end":83,"column_start":1,"column_end":97}},{"value":"/ reset the signal directly from inside the signal handler itself.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12743,"byte_end":12811,"line_start":84,"line_end":84,"column_start":1,"column_end":69}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12812,"byte_end":12815,"line_start":85,"line_end":85,"column_start":1,"column_end":4}},{"value":"/ # Examples","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12816,"byte_end":12830,"line_start":86,"line_end":86,"column_start":1,"column_end":15}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12831,"byte_end":12834,"line_start":87,"line_end":87,"column_start":1,"column_end":4}},{"value":"/ ```rust","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12835,"byte_end":12846,"line_start":88,"line_end":88,"column_start":1,"column_end":12}},{"value":"/ # extern crate libc;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12847,"byte_end":12871,"line_start":89,"line_end":89,"column_start":1,"column_end":25}},{"value":"/ # extern crate signal_hook;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12872,"byte_end":12903,"line_start":90,"line_end":90,"column_start":1,"column_end":32}},{"value":"/ #","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12904,"byte_end":12909,"line_start":91,"line_end":91,"column_start":1,"column_end":6}},{"value":"/ # use std::io::Error;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12910,"byte_end":12935,"line_start":92,"line_end":92,"column_start":1,"column_end":26}},{"value":"/ # use std::sync::atomic::{AtomicBool, Ordering};","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12936,"byte_end":12988,"line_start":93,"line_end":93,"column_start":1,"column_end":53}},{"value":"/ # use std::sync::Arc;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":12989,"byte_end":13014,"line_start":94,"line_end":94,"column_start":1,"column_end":26}},{"value":"/ #","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13015,"byte_end":13020,"line_start":95,"line_end":95,"column_start":1,"column_end":6}},{"value":"/ # fn keep_processing() { std::thread::sleep(std::time::Duration::from_millis(50)); }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13021,"byte_end":13109,"line_start":96,"line_end":96,"column_start":1,"column_end":89}},{"value":"/ # fn app_cleanup() {}","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13110,"byte_end":13135,"line_start":97,"line_end":97,"column_start":1,"column_end":26}},{"value":"/ use signal_hook::{cleanup, flag, SIGTERM};","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13136,"byte_end":13182,"line_start":98,"line_end":98,"column_start":1,"column_end":47}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13183,"byte_end":13186,"line_start":99,"line_end":99,"column_start":1,"column_end":4}},{"value":"/ fn main() -> Result<(), Error> {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13187,"byte_end":13223,"line_start":100,"line_end":100,"column_start":1,"column_end":37}},{"value":"/ let terminated = Arc::new(AtomicBool::new(false));","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13224,"byte_end":13282,"line_start":101,"line_end":101,"column_start":1,"column_end":59}},{"value":"/ flag::register(SIGTERM, Arc::clone(&terminated))?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13283,"byte_end":13341,"line_start":102,"line_end":102,"column_start":1,"column_end":59}},{"value":"/ # unsafe { libc::raise(SIGTERM) };","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13342,"byte_end":13382,"line_start":103,"line_end":103,"column_start":1,"column_end":41}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13383,"byte_end":13386,"line_start":104,"line_end":104,"column_start":1,"column_end":4}},{"value":"/ while !terminated.load(Ordering::Relaxed) {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13387,"byte_end":13438,"line_start":105,"line_end":105,"column_start":1,"column_end":52}},{"value":"/ keep_processing();","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13439,"byte_end":13469,"line_start":106,"line_end":106,"column_start":1,"column_end":31}},{"value":"/ }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13470,"byte_end":13479,"line_start":107,"line_end":107,"column_start":1,"column_end":10}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13480,"byte_end":13483,"line_start":108,"line_end":108,"column_start":1,"column_end":4}},{"value":"/ cleanup::cleanup_signal(SIGTERM)?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13484,"byte_end":13526,"line_start":109,"line_end":109,"column_start":1,"column_end":43}},{"value":"/ app_cleanup();","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13527,"byte_end":13549,"line_start":110,"line_end":110,"column_start":1,"column_end":23}},{"value":"/ Ok(())","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13550,"byte_end":13564,"line_start":111,"line_end":111,"column_start":1,"column_end":15}},{"value":"/ }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13565,"byte_end":13570,"line_start":112,"line_end":112,"column_start":1,"column_end":6}},{"value":"/ ```","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":13571,"byte_end":13578,"line_start":113,"line_end":113,"column_start":1,"column_end":8}}]},{"kind":"Function","id":{"krate":0,"index":19},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16472,"byte_end":16480,"line_start":195,"line_end":195,"column_start":8,"column_end":16},"name":"register","qualname":"::cleanup::register","value":"fn (signal: c_int, cleanup: Vec<c_int>) -> Result<SigId, Error>","parent":null,"children":[],"decl_id":null,"docs":" Register a cleanup after receiving a signal.","sig":null,"attributes":[{"value":"/ Register a cleanup after receiving a signal.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":14546,"byte_end":14594,"line_start":146,"line_end":146,"column_start":1,"column_end":49}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":14595,"byte_end":14598,"line_start":147,"line_end":147,"column_start":1,"column_end":4}},{"value":"/ Registers an action that, after receiving `signal`, will reset all signals specified in","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":14599,"byte_end":14690,"line_start":148,"line_end":148,"column_start":1,"column_end":92}},{"value":"/ `cleanup` to their OS defaults. The reset is done as part of the signal handler.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":14691,"byte_end":14775,"line_start":149,"line_end":149,"column_start":1,"column_end":85}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":14776,"byte_end":14779,"line_start":150,"line_end":150,"column_start":1,"column_end":4}},{"value":"/ The intended use case is that at CTRL+C (or something similar), the application starts shutting","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":14780,"byte_end":14879,"line_start":151,"line_end":151,"column_start":1,"column_end":100}},{"value":"/ down. This might take some time so by resetting all terminal signals to the defaults at that","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":14880,"byte_end":14976,"line_start":152,"line_end":152,"column_start":1,"column_end":97}},{"value":"/ time makes sure a second CTRL+C results in immediate (hard) termination of the application.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":14977,"byte_end":15072,"line_start":153,"line_end":153,"column_start":1,"column_end":96}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15073,"byte_end":15076,"line_start":154,"line_end":154,"column_start":1,"column_end":4}},{"value":"/ The hooks are still left inside and any following hooks after the reset are still run. Only the","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15077,"byte_end":15176,"line_start":155,"line_end":155,"column_start":1,"column_end":100}},{"value":"/ next signal will be affected (and the hooks will be inert).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15177,"byte_end":15240,"line_start":156,"line_end":156,"column_start":1,"column_end":64}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15241,"byte_end":15244,"line_start":157,"line_end":157,"column_start":1,"column_end":4}},{"value":"/ # Warning","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15245,"byte_end":15258,"line_start":158,"line_end":158,"column_start":1,"column_end":14}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15259,"byte_end":15262,"line_start":159,"line_end":159,"column_start":1,"column_end":4}},{"value":"/ The reset as part of the action is *global* and *irreversible*. All signal hooks and all","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15263,"byte_end":15355,"line_start":160,"line_end":160,"column_start":1,"column_end":93}},{"value":"/ signals registered outside of `signal-hook` are affected and won't be run any more. Registering","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15356,"byte_end":15455,"line_start":161,"line_end":161,"column_start":1,"column_end":100}},{"value":"/ more hooks for the same signals as cleaned will have no effect.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15456,"byte_end":15523,"line_start":162,"line_end":162,"column_start":1,"column_end":68}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15524,"byte_end":15527,"line_start":163,"line_end":163,"column_start":1,"column_end":4}},{"value":"/ The latter part of having no effect may be changed in the future, do not rely on it.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15528,"byte_end":15616,"line_start":164,"line_end":164,"column_start":1,"column_end":89}},{"value":"/ Preferably, don't manipulate the signal any longer.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15617,"byte_end":15672,"line_start":165,"line_end":165,"column_start":1,"column_end":56}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15673,"byte_end":15676,"line_start":166,"line_end":166,"column_start":1,"column_end":4}},{"value":"/ # Examples","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15677,"byte_end":15691,"line_start":167,"line_end":167,"column_start":1,"column_end":15}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15692,"byte_end":15695,"line_start":168,"line_end":168,"column_start":1,"column_end":4}},{"value":"/ ```rust","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15696,"byte_end":15707,"line_start":169,"line_end":169,"column_start":1,"column_end":12}},{"value":"/ # extern crate libc;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15708,"byte_end":15732,"line_start":170,"line_end":170,"column_start":1,"column_end":25}},{"value":"/ # extern crate signal_hook;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15733,"byte_end":15764,"line_start":171,"line_end":171,"column_start":1,"column_end":32}},{"value":"/ #","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15765,"byte_end":15770,"line_start":172,"line_end":172,"column_start":1,"column_end":6}},{"value":"/ # use std::io::Error;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15771,"byte_end":15796,"line_start":173,"line_end":173,"column_start":1,"column_end":26}},{"value":"/ # use std::sync::atomic::{AtomicBool, Ordering};","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15797,"byte_end":15849,"line_start":174,"line_end":174,"column_start":1,"column_end":53}},{"value":"/ # use std::sync::Arc;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15850,"byte_end":15875,"line_start":175,"line_end":175,"column_start":1,"column_end":26}},{"value":"/ #","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15876,"byte_end":15881,"line_start":176,"line_end":176,"column_start":1,"column_end":6}},{"value":"/ # fn keep_processing() { std::thread::sleep(std::time::Duration::from_millis(50)); }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15882,"byte_end":15970,"line_start":177,"line_end":177,"column_start":1,"column_end":89}},{"value":"/ # fn app_cleanup() {}","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15971,"byte_end":15996,"line_start":178,"line_end":178,"column_start":1,"column_end":26}},{"value":"/ use signal_hook::{cleanup, flag, SIGINT, SIGTERM};","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":15997,"byte_end":16051,"line_start":179,"line_end":179,"column_start":1,"column_end":55}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16052,"byte_end":16055,"line_start":180,"line_end":180,"column_start":1,"column_end":4}},{"value":"/ fn main() -> Result<(), Error> {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16056,"byte_end":16092,"line_start":181,"line_end":181,"column_start":1,"column_end":37}},{"value":"/ let terminated = Arc::new(AtomicBool::new(false));","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16093,"byte_end":16151,"line_start":182,"line_end":182,"column_start":1,"column_end":59}},{"value":"/ flag::register(SIGTERM, Arc::clone(&terminated))?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16152,"byte_end":16210,"line_start":183,"line_end":183,"column_start":1,"column_end":59}},{"value":"/ cleanup::register(SIGTERM, vec![SIGTERM, SIGINT])?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16211,"byte_end":16270,"line_start":184,"line_end":184,"column_start":1,"column_end":60}},{"value":"/ # unsafe { libc::raise(SIGTERM) };","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16271,"byte_end":16311,"line_start":185,"line_end":185,"column_start":1,"column_end":41}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16312,"byte_end":16315,"line_start":186,"line_end":186,"column_start":1,"column_end":4}},{"value":"/ while !terminated.load(Ordering::Relaxed) {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16316,"byte_end":16367,"line_start":187,"line_end":187,"column_start":1,"column_end":52}},{"value":"/ keep_processing();","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16368,"byte_end":16398,"line_start":188,"line_end":188,"column_start":1,"column_end":31}},{"value":"/ }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16399,"byte_end":16408,"line_start":189,"line_end":189,"column_start":1,"column_end":10}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16409,"byte_end":16412,"line_start":190,"line_end":190,"column_start":1,"column_end":4}},{"value":"/ app_cleanup();","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16413,"byte_end":16435,"line_start":191,"line_end":191,"column_start":1,"column_end":23}},{"value":"/ Ok(())","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16436,"byte_end":16450,"line_start":192,"line_end":192,"column_start":1,"column_end":15}},{"value":"/ }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16451,"byte_end":16456,"line_start":193,"line_end":193,"column_start":1,"column_end":6}},{"value":"/ ```","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/cleanup.rs","byte_start":16457,"byte_end":16464,"line_start":194,"line_end":194,"column_start":1,"column_end":8}}]},{"kind":"Mod","id":{"krate":0,"index":21},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1},"name":"flag","qualname":"::flag","value":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","parent":null,"children":[{"krate":0,"index":22},{"krate":0,"index":23},{"krate":0,"index":27},{"krate":0,"index":28},{"krate":0,"index":29},{"krate":0,"index":30},{"krate":0,"index":32}],"decl_id":null,"docs":" Module for actions setting flags.","sig":null,"attributes":[{"value":"! Module for actions setting flags.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":16956,"byte_end":16993,"line_start":1,"line_end":1,"column_start":1,"column_end":38}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":16994,"byte_end":16997,"line_start":2,"line_end":2,"column_start":1,"column_end":4}},{"value":"! This contains helper functions to set flags whenever a signal happens. The flags are atomic","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":16998,"byte_end":17093,"line_start":3,"line_end":3,"column_start":1,"column_end":96}},{"value":"! bools or numbers and the library manipulates them with the `SeqCst` ordering, in case someone","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17094,"byte_end":17191,"line_start":4,"line_end":4,"column_start":1,"column_end":98}},{"value":"! cares about relative order to some *other* atomic variables. If you don't care about the","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17192,"byte_end":17284,"line_start":5,"line_end":5,"column_start":1,"column_end":93}},{"value":"! relative order, you are free to use `Ordering::Relaxed` when reading and resetting the flags.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17285,"byte_end":17382,"line_start":6,"line_end":6,"column_start":1,"column_end":98}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17383,"byte_end":17386,"line_start":7,"line_end":7,"column_start":1,"column_end":4}},{"value":"! # When to use","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17387,"byte_end":17404,"line_start":8,"line_end":8,"column_start":1,"column_end":18}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17405,"byte_end":17408,"line_start":9,"line_end":9,"column_start":1,"column_end":4}},{"value":"! The flags in this module allow for polling if a signal arrived since the previous poll. The do","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17409,"byte_end":17507,"line_start":10,"line_end":10,"column_start":1,"column_end":99}},{"value":"! not allow blocking until something arrives.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17508,"byte_end":17555,"line_start":11,"line_end":11,"column_start":1,"column_end":48}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17556,"byte_end":17559,"line_start":12,"line_end":12,"column_start":1,"column_end":4}},{"value":"! Therefore, the natural way to use them is in applications that have some kind of iterative work","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17560,"byte_end":17659,"line_start":13,"line_end":13,"column_start":1,"column_end":100}},{"value":"! with both some upper and lower time limit on one iteration. If one iteration could block for","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17660,"byte_end":17756,"line_start":14,"line_end":14,"column_start":1,"column_end":97}},{"value":"! arbitrary time, the handling of the signal would be postponed for a long time. If the iteration","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17757,"byte_end":17856,"line_start":15,"line_end":15,"column_start":1,"column_end":100}},{"value":"! didn't block at all, the checking for the signal would turn into a busy-loop.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17857,"byte_end":17938,"line_start":16,"line_end":16,"column_start":1,"column_end":82}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17939,"byte_end":17942,"line_start":17,"line_end":17,"column_start":1,"column_end":4}},{"value":"! If what you need is blocking until a signal comes, you might find better tools in the","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":17943,"byte_end":18032,"line_start":18,"line_end":18,"column_start":1,"column_end":90}},{"value":"! [`pipe`](../pipe/) and [`iterator`](../iterator/) modules.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18033,"byte_end":18095,"line_start":19,"line_end":19,"column_start":1,"column_end":63}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18096,"byte_end":18099,"line_start":20,"line_end":20,"column_start":1,"column_end":4}},{"value":"! # Examples","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18100,"byte_end":18114,"line_start":21,"line_end":21,"column_start":1,"column_end":15}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18115,"byte_end":18118,"line_start":22,"line_end":22,"column_start":1,"column_end":4}},{"value":"! Doing something until terminated. This also knows by which signal it was terminated. In case","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18119,"byte_end":18215,"line_start":23,"line_end":23,"column_start":1,"column_end":97}},{"value":"! multiple termination signals arrive before it is handled, it recognizes the last one.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18216,"byte_end":18305,"line_start":24,"line_end":24,"column_start":1,"column_end":90}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18306,"byte_end":18309,"line_start":25,"line_end":25,"column_start":1,"column_end":4}},{"value":"! ```rust","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18310,"byte_end":18321,"line_start":26,"line_end":26,"column_start":1,"column_end":12}},{"value":"! extern crate signal_hook;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18322,"byte_end":18351,"line_start":27,"line_end":27,"column_start":1,"column_end":30}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18352,"byte_end":18355,"line_start":28,"line_end":28,"column_start":1,"column_end":4}},{"value":"! use std::io::Error;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18356,"byte_end":18379,"line_start":29,"line_end":29,"column_start":1,"column_end":24}},{"value":"! use std::sync::Arc;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18380,"byte_end":18403,"line_start":30,"line_end":30,"column_start":1,"column_end":24}},{"value":"! use std::sync::atomic::{AtomicUsize, Ordering};","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18404,"byte_end":18455,"line_start":31,"line_end":31,"column_start":1,"column_end":52}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18456,"byte_end":18459,"line_start":32,"line_end":32,"column_start":1,"column_end":4}},{"value":"! use signal_hook::flag as signal_flag;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18460,"byte_end":18501,"line_start":33,"line_end":33,"column_start":1,"column_end":42}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18502,"byte_end":18505,"line_start":34,"line_end":34,"column_start":1,"column_end":4}},{"value":"! fn main() -> Result<(), Error> {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18506,"byte_end":18542,"line_start":35,"line_end":35,"column_start":1,"column_end":37}},{"value":"! let term = Arc::new(AtomicUsize::new(0));","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18543,"byte_end":18592,"line_start":36,"line_end":36,"column_start":1,"column_end":50}},{"value":"! const SIGTERM: usize = signal_hook::SIGTERM as usize;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18593,"byte_end":18654,"line_start":37,"line_end":37,"column_start":1,"column_end":62}},{"value":"! const SIGINT: usize = signal_hook::SIGINT as usize;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18655,"byte_end":18714,"line_start":38,"line_end":38,"column_start":1,"column_end":60}},{"value":"! # #[cfg(not(windows))]","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18715,"byte_end":18743,"line_start":39,"line_end":39,"column_start":1,"column_end":29}},{"value":"! const SIGQUIT: usize = signal_hook::SIGQUIT as usize;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18744,"byte_end":18805,"line_start":40,"line_end":40,"column_start":1,"column_end":62}},{"value":"! signal_flag::register_usize(signal_hook::SIGTERM, Arc::clone(&term), SIGTERM)?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18806,"byte_end":18893,"line_start":41,"line_end":41,"column_start":1,"column_end":88}},{"value":"! signal_flag::register_usize(signal_hook::SIGINT, Arc::clone(&term), SIGINT)?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18894,"byte_end":18979,"line_start":42,"line_end":42,"column_start":1,"column_end":86}},{"value":"! # #[cfg(not(windows))]","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":18980,"byte_end":19008,"line_start":43,"line_end":43,"column_start":1,"column_end":29}},{"value":"! signal_flag::register_usize(signal_hook::SIGQUIT, Arc::clone(&term), SIGQUIT)?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19009,"byte_end":19096,"line_start":44,"line_end":44,"column_start":1,"column_end":88}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19097,"byte_end":19100,"line_start":45,"line_end":45,"column_start":1,"column_end":4}},{"value":"! # // Hack to terminate the example when run as a doc-test.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19101,"byte_end":19165,"line_start":46,"line_end":46,"column_start":1,"column_end":65}},{"value":"! # term.store(SIGTERM, Ordering::Relaxed);","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19166,"byte_end":19213,"line_start":47,"line_end":47,"column_start":1,"column_end":48}},{"value":"! loop {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19214,"byte_end":19228,"line_start":48,"line_end":48,"column_start":1,"column_end":15}},{"value":"! match term.load(Ordering::Relaxed) {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19229,"byte_end":19277,"line_start":49,"line_end":49,"column_start":1,"column_end":49}},{"value":"! 0 => {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19278,"byte_end":19300,"line_start":50,"line_end":50,"column_start":1,"column_end":23}},{"value":"! // Do some useful stuff here","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19301,"byte_end":19349,"line_start":51,"line_end":51,"column_start":1,"column_end":49}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19350,"byte_end":19367,"line_start":52,"line_end":52,"column_start":1,"column_end":18}},{"value":"! SIGTERM => {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19368,"byte_end":19396,"line_start":53,"line_end":53,"column_start":1,"column_end":29}},{"value":"! eprintln!(\"Terminating on the TERM signal\");","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19397,"byte_end":19461,"line_start":54,"line_end":54,"column_start":1,"column_end":65}},{"value":"! break;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19462,"byte_end":19488,"line_start":55,"line_end":55,"column_start":1,"column_end":27}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19489,"byte_end":19506,"line_start":56,"line_end":56,"column_start":1,"column_end":18}},{"value":"! SIGINT => {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19507,"byte_end":19534,"line_start":57,"line_end":57,"column_start":1,"column_end":28}},{"value":"! eprintln!(\"Terminating on the INT signal\");","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19535,"byte_end":19598,"line_start":58,"line_end":58,"column_start":1,"column_end":64}},{"value":"! break;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19599,"byte_end":19625,"line_start":59,"line_end":59,"column_start":1,"column_end":27}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19626,"byte_end":19643,"line_start":60,"line_end":60,"column_start":1,"column_end":18}},{"value":"! # #[cfg(not(windows))]","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19644,"byte_end":19680,"line_start":61,"line_end":61,"column_start":1,"column_end":37}},{"value":"! SIGQUIT => {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19681,"byte_end":19709,"line_start":62,"line_end":62,"column_start":1,"column_end":29}},{"value":"! eprintln!(\"Terminating on the QUIT signal\");","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19710,"byte_end":19774,"line_start":63,"line_end":63,"column_start":1,"column_end":65}},{"value":"! break;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19775,"byte_end":19801,"line_start":64,"line_end":64,"column_start":1,"column_end":27}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19802,"byte_end":19819,"line_start":65,"line_end":65,"column_start":1,"column_end":18}},{"value":"! _ => unreachable!(),","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19820,"byte_end":19856,"line_start":66,"line_end":66,"column_start":1,"column_end":37}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19857,"byte_end":19870,"line_start":67,"line_end":67,"column_start":1,"column_end":14}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19871,"byte_end":19880,"line_start":68,"line_end":68,"column_start":1,"column_end":10}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19881,"byte_end":19884,"line_start":69,"line_end":69,"column_start":1,"column_end":4}},{"value":"! Ok(())","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19885,"byte_end":19899,"line_start":70,"line_end":70,"column_start":1,"column_end":15}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19900,"byte_end":19905,"line_start":71,"line_end":71,"column_start":1,"column_end":6}},{"value":"! ```","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19906,"byte_end":19913,"line_start":72,"line_end":72,"column_start":1,"column_end":8}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19914,"byte_end":19917,"line_start":73,"line_end":73,"column_start":1,"column_end":4}},{"value":"! Sending a signal to self and seeing it arrived (not of a practical usage on itself):","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":19918,"byte_end":20006,"line_start":74,"line_end":74,"column_start":1,"column_end":89}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20007,"byte_end":20010,"line_start":75,"line_end":75,"column_start":1,"column_end":4}},{"value":"! ```rust","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20011,"byte_end":20022,"line_start":76,"line_end":76,"column_start":1,"column_end":12}},{"value":"! extern crate libc;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20023,"byte_end":20045,"line_start":77,"line_end":77,"column_start":1,"column_end":23}},{"value":"! extern crate signal_hook;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20046,"byte_end":20075,"line_start":78,"line_end":78,"column_start":1,"column_end":30}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20076,"byte_end":20079,"line_start":79,"line_end":79,"column_start":1,"column_end":4}},{"value":"! use std::io::Error;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20080,"byte_end":20103,"line_start":80,"line_end":80,"column_start":1,"column_end":24}},{"value":"! use std::sync::Arc;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20104,"byte_end":20127,"line_start":81,"line_end":81,"column_start":1,"column_end":24}},{"value":"! use std::sync::atomic::{AtomicBool, Ordering};","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20128,"byte_end":20178,"line_start":82,"line_end":82,"column_start":1,"column_end":51}},{"value":"! use std::thread;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20179,"byte_end":20199,"line_start":83,"line_end":83,"column_start":1,"column_end":21}},{"value":"! use std::time::Duration;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20200,"byte_end":20228,"line_start":84,"line_end":84,"column_start":1,"column_end":29}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20229,"byte_end":20232,"line_start":85,"line_end":85,"column_start":1,"column_end":4}},{"value":"! fn main() -> Result<(), Error> {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20233,"byte_end":20269,"line_start":86,"line_end":86,"column_start":1,"column_end":37}},{"value":"! let got = Arc::new(AtomicBool::new(false));","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20270,"byte_end":20321,"line_start":87,"line_end":87,"column_start":1,"column_end":52}},{"value":"! # #[cfg(not(windows))]","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20322,"byte_end":20350,"line_start":88,"line_end":88,"column_start":1,"column_end":29}},{"value":"! signal_hook::flag::register(signal_hook::SIGUSR1, Arc::clone(&got))?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20351,"byte_end":20428,"line_start":89,"line_end":89,"column_start":1,"column_end":78}},{"value":"! # #[cfg(windows)]","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20429,"byte_end":20452,"line_start":90,"line_end":90,"column_start":1,"column_end":24}},{"value":"! # signal_hook::flag::register(signal_hook::SIGTERM, Arc::clone(&got))?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20453,"byte_end":20530,"line_start":91,"line_end":91,"column_start":1,"column_end":78}},{"value":"! unsafe {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20531,"byte_end":20547,"line_start":92,"line_end":92,"column_start":1,"column_end":17}},{"value":"! # #[cfg(not(windows))]","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20548,"byte_end":20580,"line_start":93,"line_end":93,"column_start":1,"column_end":33}},{"value":"! libc::raise(signal_hook::SIGUSR1);","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20581,"byte_end":20627,"line_start":94,"line_end":94,"column_start":1,"column_end":47}},{"value":"! # #[cfg(windows)]","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20628,"byte_end":20655,"line_start":95,"line_end":95,"column_start":1,"column_end":28}},{"value":"! # libc::raise(signal_hook::SIGTERM);","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20656,"byte_end":20702,"line_start":96,"line_end":96,"column_start":1,"column_end":47}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20703,"byte_end":20712,"line_start":97,"line_end":97,"column_start":1,"column_end":10}},{"value":"! // A sleep here, because it could run the signal handler in another thread and we may not","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20713,"byte_end":20810,"line_start":98,"line_end":98,"column_start":1,"column_end":98}},{"value":"! // see the flag right away. This is still a hack and not guaranteed to work, it is just an","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20811,"byte_end":20909,"line_start":99,"line_end":99,"column_start":1,"column_end":99}},{"value":"! // example!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20910,"byte_end":20929,"line_start":100,"line_end":100,"column_start":1,"column_end":20}},{"value":"! thread::sleep(Duration::from_secs(1));","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20930,"byte_end":20976,"line_start":101,"line_end":101,"column_start":1,"column_end":47}},{"value":"! assert!(got.load(Ordering::Relaxed));","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":20977,"byte_end":21022,"line_start":102,"line_end":102,"column_start":1,"column_end":46}},{"value":"! Ok(())","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21023,"byte_end":21037,"line_start":103,"line_end":103,"column_start":1,"column_end":15}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21038,"byte_end":21043,"line_start":104,"line_end":104,"column_start":1,"column_end":6}},{"value":"! ```","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21044,"byte_end":21051,"line_start":105,"line_end":105,"column_start":1,"column_end":8}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21052,"byte_end":21055,"line_start":106,"line_end":106,"column_start":1,"column_end":4}},{"value":"! Reloading a configuration on `SIGHUP` (which is a common behaviour of many UNIX daemons,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21056,"byte_end":21148,"line_start":107,"line_end":107,"column_start":1,"column_end":93}},{"value":"! together with reopening the log file).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21149,"byte_end":21191,"line_start":108,"line_end":108,"column_start":1,"column_end":43}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21192,"byte_end":21195,"line_start":109,"line_end":109,"column_start":1,"column_end":4}},{"value":"! ```rust","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21196,"byte_end":21207,"line_start":110,"line_end":110,"column_start":1,"column_end":12}},{"value":"! extern crate signal_hook;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21208,"byte_end":21237,"line_start":111,"line_end":111,"column_start":1,"column_end":30}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21238,"byte_end":21241,"line_start":112,"line_end":112,"column_start":1,"column_end":4}},{"value":"! use std::io::Error;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21242,"byte_end":21265,"line_start":113,"line_end":113,"column_start":1,"column_end":24}},{"value":"! use std::sync::Arc;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21266,"byte_end":21289,"line_start":114,"line_end":114,"column_start":1,"column_end":24}},{"value":"! use std::sync::atomic::{AtomicBool, Ordering};","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21290,"byte_end":21340,"line_start":115,"line_end":115,"column_start":1,"column_end":51}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21341,"byte_end":21344,"line_start":116,"line_end":116,"column_start":1,"column_end":4}},{"value":"! use signal_hook::flag as signal_flag;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21345,"byte_end":21386,"line_start":117,"line_end":117,"column_start":1,"column_end":42}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21387,"byte_end":21390,"line_start":118,"line_end":118,"column_start":1,"column_end":4}},{"value":"! fn main() -> Result<(), Error> {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21391,"byte_end":21427,"line_start":119,"line_end":119,"column_start":1,"column_end":37}},{"value":"! // We start with true, to load the configuration in the very first iteration too.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21428,"byte_end":21517,"line_start":120,"line_end":120,"column_start":1,"column_end":90}},{"value":"! let reload = Arc::new(AtomicBool::new(true));","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21518,"byte_end":21571,"line_start":121,"line_end":121,"column_start":1,"column_end":54}},{"value":"! let term = Arc::new(AtomicBool::new(false));","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21572,"byte_end":21624,"line_start":122,"line_end":122,"column_start":1,"column_end":53}},{"value":"! # #[cfg(not(windows))]","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21625,"byte_end":21653,"line_start":123,"line_end":123,"column_start":1,"column_end":29}},{"value":"! signal_flag::register(signal_hook::SIGHUP, Arc::clone(&reload))?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21654,"byte_end":21727,"line_start":124,"line_end":124,"column_start":1,"column_end":74}},{"value":"! signal_flag::register(signal_hook::SIGINT, Arc::clone(&term))?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21728,"byte_end":21799,"line_start":125,"line_end":125,"column_start":1,"column_end":72}},{"value":"! signal_flag::register(signal_hook::SIGTERM, Arc::clone(&term))?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21800,"byte_end":21872,"line_start":126,"line_end":126,"column_start":1,"column_end":73}},{"value":"! # #[cfg(not(windows))]","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21873,"byte_end":21901,"line_start":127,"line_end":127,"column_start":1,"column_end":29}},{"value":"! signal_flag::register(signal_hook::SIGQUIT, Arc::clone(&term))?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21902,"byte_end":21974,"line_start":128,"line_end":128,"column_start":1,"column_end":73}},{"value":"! while !term.load(Ordering::Relaxed) {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":21975,"byte_end":22020,"line_start":129,"line_end":129,"column_start":1,"column_end":46}},{"value":"! // Using swap here, not load, to reset it back to false once it is reloaded.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22021,"byte_end":22109,"line_start":130,"line_end":130,"column_start":1,"column_end":89}},{"value":"! if reload.swap(false, Ordering::Relaxed) {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22110,"byte_end":22164,"line_start":131,"line_end":131,"column_start":1,"column_end":55}},{"value":"! // Reload the config here","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22165,"byte_end":22206,"line_start":132,"line_end":132,"column_start":1,"column_end":42}},{"value":"! #","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22207,"byte_end":22212,"line_start":133,"line_end":133,"column_start":1,"column_end":6}},{"value":"! # // Hiden hack to make the example terminate when run as doc-test. Not part of the","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22213,"byte_end":22310,"line_start":134,"line_end":134,"column_start":1,"column_end":98}},{"value":"! # // real code.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22311,"byte_end":22340,"line_start":135,"line_end":135,"column_start":1,"column_end":30}},{"value":"! # term.store(true, Ordering::Relaxed);","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22341,"byte_end":22393,"line_start":136,"line_end":136,"column_start":1,"column_end":53}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22394,"byte_end":22407,"line_start":137,"line_end":137,"column_start":1,"column_end":14}},{"value":"! // Serve one request","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22408,"byte_end":22440,"line_start":138,"line_end":138,"column_start":1,"column_end":33}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22441,"byte_end":22450,"line_start":139,"line_end":139,"column_start":1,"column_end":10}},{"value":"! Ok(())","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22451,"byte_end":22465,"line_start":140,"line_end":140,"column_start":1,"column_end":15}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22466,"byte_end":22471,"line_start":141,"line_end":141,"column_start":1,"column_end":6}},{"value":"! ```","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22472,"byte_end":22479,"line_start":142,"line_end":142,"column_start":1,"column_end":8}}]},{"kind":"Function","id":{"krate":0,"index":30},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22711,"byte_end":22719,"line_start":153,"line_end":153,"column_start":8,"column_end":16},"name":"register","qualname":"::flag::register","value":"fn (signal: c_int, flag: Arc<AtomicBool>) -> Result<SigId, Error>","parent":null,"children":[],"decl_id":null,"docs":" Registers an action to set the flag to `true` whenever the given signal arrives.\n","sig":null,"attributes":[{"value":"/ Registers an action to set the flag to `true` whenever the given signal arrives.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":22619,"byte_end":22703,"line_start":152,"line_end":152,"column_start":1,"column_end":85}}]},{"kind":"Function","id":{"krate":0,"index":32},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":23237,"byte_end":23251,"line_start":162,"line_end":162,"column_start":8,"column_end":22},"name":"register_usize","qualname":"::flag::register_usize","value":"fn (signal: c_int, flag: Arc<AtomicUsize>, value: usize) -> Result<SigId, Error>","parent":null,"children":[],"decl_id":null,"docs":" Registers an action to set the flag to the given value whenever the signal arrives.\n","sig":null,"attributes":[{"value":"/ Registers an action to set the flag to the given value whenever the signal arrives.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/flag.rs","byte_start":23142,"byte_end":23229,"line_start":161,"line_end":161,"column_start":1,"column_end":88}}]},{"kind":"Mod","id":{"krate":0,"index":34},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1},"name":"iterator","qualname":"::iterator","value":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","parent":null,"children":[{"krate":0,"index":35},{"krate":0,"index":36},{"krate":0,"index":37},{"krate":0,"index":38},{"krate":0,"index":39},{"krate":0,"index":40},{"krate":0,"index":41},{"krate":0,"index":44},{"krate":0,"index":47},{"krate":0,"index":50},{"krate":0,"index":51},{"krate":0,"index":145},{"krate":0,"index":150},{"krate":0,"index":52},{"krate":0,"index":152},{"krate":0,"index":155},{"krate":0,"index":54},{"krate":0,"index":157},{"krate":0,"index":162},{"krate":0,"index":160},{"krate":0,"index":57},{"krate":0,"index":73},{"krate":0,"index":78},{"krate":0,"index":82},{"krate":0,"index":86},{"krate":0,"index":90}],"decl_id":null,"docs":" An iterator over incoming signals.","sig":null,"attributes":[{"value":"cfg(not (windows))","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7991,"byte_end":8011,"line_start":165,"line_end":165,"column_start":1,"column_end":21}},{"value":"! An iterator over incoming signals.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":24995,"byte_end":25033,"line_start":1,"line_end":1,"column_start":1,"column_end":39}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25034,"byte_end":25037,"line_start":2,"line_end":2,"column_start":1,"column_end":4}},{"value":"! This provides a higher abstraction over the signals, providing a structure","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25038,"byte_end":25116,"line_start":3,"line_end":3,"column_start":1,"column_end":79}},{"value":"! ([`Signals`](struct.Signals.html)) able to iterate over the incoming signals.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25117,"byte_end":25198,"line_start":4,"line_end":4,"column_start":1,"column_end":82}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25199,"byte_end":25202,"line_start":5,"line_end":5,"column_start":1,"column_end":4}},{"value":"! In case the `tokio-support` feature is turned on, the [`Async`](struct.Async.html) is also","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25203,"byte_end":25297,"line_start":6,"line_end":6,"column_start":1,"column_end":95}},{"value":"! available, making it possible to integrate with the tokio runtime.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25298,"byte_end":25368,"line_start":7,"line_end":7,"column_start":1,"column_end":71}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25369,"byte_end":25372,"line_start":8,"line_end":8,"column_start":1,"column_end":4}},{"value":"! # Examples","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25373,"byte_end":25387,"line_start":9,"line_end":9,"column_start":1,"column_end":15}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25388,"byte_end":25391,"line_start":10,"line_end":10,"column_start":1,"column_end":4}},{"value":"! ```rust","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25392,"byte_end":25403,"line_start":11,"line_end":11,"column_start":1,"column_end":12}},{"value":"! extern crate libc;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25404,"byte_end":25426,"line_start":12,"line_end":12,"column_start":1,"column_end":23}},{"value":"! extern crate signal_hook;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25427,"byte_end":25456,"line_start":13,"line_end":13,"column_start":1,"column_end":30}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25457,"byte_end":25460,"line_start":14,"line_end":14,"column_start":1,"column_end":4}},{"value":"! use std::io::Error;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25461,"byte_end":25484,"line_start":15,"line_end":15,"column_start":1,"column_end":24}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25485,"byte_end":25488,"line_start":16,"line_end":16,"column_start":1,"column_end":4}},{"value":"! use signal_hook::iterator::Signals;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25489,"byte_end":25528,"line_start":17,"line_end":17,"column_start":1,"column_end":40}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25529,"byte_end":25532,"line_start":18,"line_end":18,"column_start":1,"column_end":4}},{"value":"! fn main() -> Result<(), Error> {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25533,"byte_end":25569,"line_start":19,"line_end":19,"column_start":1,"column_end":37}},{"value":"! let signals = Signals::new(&[","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25570,"byte_end":25607,"line_start":20,"line_end":20,"column_start":1,"column_end":38}},{"value":"! signal_hook::SIGHUP,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25608,"byte_end":25640,"line_start":21,"line_end":21,"column_start":1,"column_end":33}},{"value":"! signal_hook::SIGTERM,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25641,"byte_end":25674,"line_start":22,"line_end":22,"column_start":1,"column_end":34}},{"value":"! signal_hook::SIGINT,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25675,"byte_end":25707,"line_start":23,"line_end":23,"column_start":1,"column_end":33}},{"value":"! signal_hook::SIGQUIT,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25708,"byte_end":25741,"line_start":24,"line_end":24,"column_start":1,"column_end":34}},{"value":"! # signal_hook::SIGUSR1,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25742,"byte_end":25775,"line_start":25,"line_end":25,"column_start":1,"column_end":34}},{"value":"! ])?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25776,"byte_end":25788,"line_start":26,"line_end":26,"column_start":1,"column_end":13}},{"value":"! # // A trick to terminate the example when run as doc-test. Not part of the real code.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25789,"byte_end":25881,"line_start":27,"line_end":27,"column_start":1,"column_end":93}},{"value":"! # unsafe { libc::raise(signal_hook::SIGUSR1) };","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25882,"byte_end":25935,"line_start":28,"line_end":28,"column_start":1,"column_end":54}},{"value":"! 'outer: loop {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25936,"byte_end":25958,"line_start":29,"line_end":29,"column_start":1,"column_end":23}},{"value":"! // Pick up signals that arrived since last time","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":25959,"byte_end":26018,"line_start":30,"line_end":30,"column_start":1,"column_end":60}},{"value":"! for signal in signals.pending() {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26019,"byte_end":26064,"line_start":31,"line_end":31,"column_start":1,"column_end":46}},{"value":"! match signal as libc::c_int {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26065,"byte_end":26110,"line_start":32,"line_end":32,"column_start":1,"column_end":46}},{"value":"! signal_hook::SIGHUP => {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26111,"byte_end":26155,"line_start":33,"line_end":33,"column_start":1,"column_end":45}},{"value":"! // Reload configuration","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26156,"byte_end":26203,"line_start":34,"line_end":34,"column_start":1,"column_end":48}},{"value":"! // Reopen the log file","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26204,"byte_end":26250,"line_start":35,"line_end":35,"column_start":1,"column_end":47}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26251,"byte_end":26272,"line_start":36,"line_end":36,"column_start":1,"column_end":22}},{"value":"! signal_hook::SIGTERM | signal_hook::SIGINT | signal_hook::SIGQUIT => {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26273,"byte_end":26363,"line_start":37,"line_end":37,"column_start":1,"column_end":91}},{"value":"! break 'outer;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26364,"byte_end":26401,"line_start":38,"line_end":38,"column_start":1,"column_end":38}},{"value":"! },","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26402,"byte_end":26424,"line_start":39,"line_end":39,"column_start":1,"column_end":23}},{"value":"! # signal_hook::SIGUSR1 => return Ok(()),","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26425,"byte_end":26483,"line_start":40,"line_end":40,"column_start":1,"column_end":59}},{"value":"! _ => unreachable!(),","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26484,"byte_end":26524,"line_start":41,"line_end":41,"column_start":1,"column_end":41}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26525,"byte_end":26542,"line_start":42,"line_end":42,"column_start":1,"column_end":18}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26543,"byte_end":26556,"line_start":43,"line_end":43,"column_start":1,"column_end":14}},{"value":"! // Do some bit of work something with upper limit on waiting, so we don't block","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26557,"byte_end":26652,"line_start":44,"line_end":44,"column_start":1,"column_end":94}},{"value":"! // forever with a SIGTERM already waiting.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26653,"byte_end":26707,"line_start":45,"line_end":45,"column_start":1,"column_end":55}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26708,"byte_end":26717,"line_start":46,"line_end":46,"column_start":1,"column_end":10}},{"value":"! println!(\"Terminating. Bye bye\");","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26718,"byte_end":26759,"line_start":47,"line_end":47,"column_start":1,"column_end":42}},{"value":"! Ok(())","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26760,"byte_end":26774,"line_start":48,"line_end":48,"column_start":1,"column_end":15}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26775,"byte_end":26780,"line_start":49,"line_end":49,"column_start":1,"column_end":6}},{"value":"! ```","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":26781,"byte_end":26788,"line_start":50,"line_end":50,"column_start":1,"column_end":8}}]},{"kind":"Struct","id":{"krate":0,"index":157},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":30156,"byte_end":30163,"line_start":162,"line_end":162,"column_start":12,"column_end":19},"name":"Signals","qualname":"::iterator::Signals","value":"Signals { }","parent":null,"children":[{"krate":0,"index":158},{"krate":0,"index":159}],"decl_id":null,"docs":" The main structure of the module, representing interest in some signals.","sig":null,"attributes":[{"value":"/ The main structure of the module, representing interest in some signals.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28150,"byte_end":28226,"line_start":107,"line_end":107,"column_start":1,"column_end":77}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28227,"byte_end":28230,"line_start":108,"line_end":108,"column_start":1,"column_end":4}},{"value":"/ Unlike the helpers in other modules, this registers the signals when created and unregisters","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28231,"byte_end":28327,"line_start":109,"line_end":109,"column_start":1,"column_end":97}},{"value":"/ them on drop. It provides the pending signals during its lifetime, either in batches or as an","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28328,"byte_end":28425,"line_start":110,"line_end":110,"column_start":1,"column_end":98}},{"value":"/ infinite iterator.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28426,"byte_end":28448,"line_start":111,"line_end":111,"column_start":1,"column_end":23}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28449,"byte_end":28452,"line_start":112,"line_end":112,"column_start":1,"column_end":4}},{"value":"/ # Multiple consumers","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28453,"byte_end":28477,"line_start":113,"line_end":113,"column_start":1,"column_end":25}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28478,"byte_end":28481,"line_start":114,"line_end":114,"column_start":1,"column_end":4}},{"value":"/ You may have noticed this structure can be used simultaneously by multiple threads. If it is","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28482,"byte_end":28578,"line_start":115,"line_end":115,"column_start":1,"column_end":97}},{"value":"/ done, a signal arrives to one of the threads (on the first come, first serve basis). The signal","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28579,"byte_end":28678,"line_start":116,"line_end":116,"column_start":1,"column_end":100}},{"value":"/ is *not* broadcasted to all currently active threads.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28679,"byte_end":28736,"line_start":117,"line_end":117,"column_start":1,"column_end":58}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28737,"byte_end":28740,"line_start":118,"line_end":118,"column_start":1,"column_end":4}},{"value":"/ A similar thing applies to cloning the structure at least one of the copies gets the signal,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28741,"byte_end":28841,"line_start":119,"line_end":119,"column_start":1,"column_end":99}},{"value":"/ but it is not broadcasted to all of them.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28842,"byte_end":28887,"line_start":120,"line_end":120,"column_start":1,"column_end":46}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28888,"byte_end":28891,"line_start":121,"line_end":121,"column_start":1,"column_end":4}},{"value":"/ If you need multiple recipients, you can create multiple independent instances (not by cloning,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28892,"byte_end":28991,"line_start":122,"line_end":122,"column_start":1,"column_end":100}},{"value":"/ but by the constructor).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":28992,"byte_end":29020,"line_start":123,"line_end":123,"column_start":1,"column_end":29}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29021,"byte_end":29024,"line_start":124,"line_end":124,"column_start":1,"column_end":4}},{"value":"/ # Examples","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29025,"byte_end":29039,"line_start":125,"line_end":125,"column_start":1,"column_end":15}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29040,"byte_end":29043,"line_start":126,"line_end":126,"column_start":1,"column_end":4}},{"value":"/ ```rust","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29044,"byte_end":29055,"line_start":127,"line_end":127,"column_start":1,"column_end":12}},{"value":"/ # extern crate signal_hook;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29056,"byte_end":29087,"line_start":128,"line_end":128,"column_start":1,"column_end":32}},{"value":"/ #","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29088,"byte_end":29093,"line_start":129,"line_end":129,"column_start":1,"column_end":6}},{"value":"/ # use std::io::Error;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29094,"byte_end":29119,"line_start":130,"line_end":130,"column_start":1,"column_end":26}},{"value":"/ # use std::thread;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29120,"byte_end":29142,"line_start":131,"line_end":131,"column_start":1,"column_end":23}},{"value":"/ use signal_hook::iterator::Signals;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29143,"byte_end":29182,"line_start":132,"line_end":132,"column_start":1,"column_end":40}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29183,"byte_end":29186,"line_start":133,"line_end":133,"column_start":1,"column_end":4}},{"value":"/ #","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29187,"byte_end":29192,"line_start":134,"line_end":134,"column_start":1,"column_end":6}},{"value":"/ # fn main() -> Result<(), Error> {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29193,"byte_end":29231,"line_start":135,"line_end":135,"column_start":1,"column_end":39}},{"value":"/ let signals = Signals::new(&[signal_hook::SIGUSR1, signal_hook::SIGUSR2])?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29232,"byte_end":29311,"line_start":136,"line_end":136,"column_start":1,"column_end":80}},{"value":"/ thread::spawn(move || {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29312,"byte_end":29339,"line_start":137,"line_end":137,"column_start":1,"column_end":28}},{"value":"/ for signal in &signals {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29340,"byte_end":29372,"line_start":138,"line_end":138,"column_start":1,"column_end":33}},{"value":"/ match signal {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29373,"byte_end":29399,"line_start":139,"line_end":139,"column_start":1,"column_end":27}},{"value":"/ signal_hook::SIGUSR1 => {},","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29400,"byte_end":29443,"line_start":140,"line_end":140,"column_start":1,"column_end":44}},{"value":"/ signal_hook::SIGUSR2 => {},","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29444,"byte_end":29487,"line_start":141,"line_end":141,"column_start":1,"column_end":44}},{"value":"/ _ => unreachable!(),","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29488,"byte_end":29524,"line_start":142,"line_end":142,"column_start":1,"column_end":37}},{"value":"/ }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29525,"byte_end":29538,"line_start":143,"line_end":143,"column_start":1,"column_end":14}},{"value":"/ }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29539,"byte_end":29548,"line_start":144,"line_end":144,"column_start":1,"column_end":10}},{"value":"/ });","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29549,"byte_end":29556,"line_start":145,"line_end":145,"column_start":1,"column_end":8}},{"value":"/ # Ok(())","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29557,"byte_end":29569,"line_start":146,"line_end":146,"column_start":1,"column_end":13}},{"value":"/ # }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29570,"byte_end":29577,"line_start":147,"line_end":147,"column_start":1,"column_end":8}},{"value":"/ ```","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29578,"byte_end":29585,"line_start":148,"line_end":148,"column_start":1,"column_end":8}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29586,"byte_end":29589,"line_start":149,"line_end":149,"column_start":1,"column_end":4}},{"value":"/ # `mio` support","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29590,"byte_end":29609,"line_start":150,"line_end":150,"column_start":1,"column_end":20}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29610,"byte_end":29613,"line_start":151,"line_end":151,"column_start":1,"column_end":4}},{"value":"/ If the crate is compiled with the `mio-support` or `mio-0_7-support` flags, the `Signals`","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29614,"byte_end":29707,"line_start":152,"line_end":152,"column_start":1,"column_end":94}},{"value":"/ becomes pluggable into `mio` version `0.6` or `0.7` respectively (it implements the `Source`","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29708,"byte_end":29804,"line_start":153,"line_end":153,"column_start":1,"column_end":97}},{"value":"/ trait). If it becomes readable, there may be new signals to pick up.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29805,"byte_end":29877,"line_start":154,"line_end":154,"column_start":1,"column_end":73}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29878,"byte_end":29881,"line_start":155,"line_end":155,"column_start":1,"column_end":4}},{"value":"/ # `tokio` support","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29882,"byte_end":29903,"line_start":156,"line_end":156,"column_start":1,"column_end":22}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29904,"byte_end":29907,"line_start":157,"line_end":157,"column_start":1,"column_end":4}},{"value":"/ If the crate is compiled with the `tokio-support` flag, the [`into_async`](#method.into_async)","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":29908,"byte_end":30006,"line_start":158,"line_end":158,"column_start":1,"column_end":99}},{"value":"/ method becomes available. This method turns the iterator into an asynchronous stream of","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":30007,"byte_end":30098,"line_start":159,"line_end":159,"column_start":1,"column_end":92}},{"value":"/ received signals.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":30099,"byte_end":30120,"line_start":160,"line_end":160,"column_start":1,"column_end":22}}]},{"kind":"Method","id":{"krate":0,"index":58},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":30443,"byte_end":30446,"line_start":172,"line_end":172,"column_start":12,"column_end":15},"name":"new","qualname":"<Signals>::new","value":"fn <I, S> (signals: I) -> Result<Self, Error>","parent":null,"children":[],"decl_id":null,"docs":" Creates the `Signals` structure.","sig":null,"attributes":[{"value":"/ Creates the `Signals` structure.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":30244,"byte_end":30280,"line_start":168,"line_end":168,"column_start":5,"column_end":41}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":30285,"byte_end":30288,"line_start":169,"line_end":169,"column_start":5,"column_end":8}},{"value":"/ This registers all the signals listed. The same restrictions (panics, errors) apply as with","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":30293,"byte_end":30388,"line_start":170,"line_end":170,"column_start":5,"column_end":100}},{"value":"/ [`register`](../fn.register.html).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":30393,"byte_end":30431,"line_start":171,"line_end":171,"column_start":5,"column_end":43}}]},{"kind":"Method","id":{"krate":0,"index":63},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31948,"byte_end":31958,"line_start":212,"line_end":212,"column_start":12,"column_end":22},"name":"add_signal","qualname":"<Signals>::add_signal","value":"fn (&self, signal: c_int) -> Result<(), Error>","parent":null,"children":[],"decl_id":null,"docs":" Registers another signal to the set watched by this [`Signals`] instance.","sig":null,"attributes":[{"value":"/ Registers another signal to the set watched by this [`Signals`] instance.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31130,"byte_end":31207,"line_start":196,"line_end":196,"column_start":5,"column_end":82}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31212,"byte_end":31215,"line_start":197,"line_end":197,"column_start":5,"column_end":8}},{"value":"/ # Notes","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31220,"byte_end":31231,"line_start":198,"line_end":198,"column_start":5,"column_end":16}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31236,"byte_end":31239,"line_start":199,"line_end":199,"column_start":5,"column_end":8}},{"value":"/ * This is safe to call concurrently from whatever thread.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31244,"byte_end":31305,"line_start":200,"line_end":200,"column_start":5,"column_end":66}},{"value":"/ * This is *not* safe to call from within a signal handler.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31310,"byte_end":31372,"line_start":201,"line_end":201,"column_start":5,"column_end":67}},{"value":"/ * If the signal number was already registered previously, this is a no-op.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31377,"byte_end":31455,"line_start":202,"line_end":202,"column_start":5,"column_end":83}},{"value":"/ * If this errors, the original set of signals is left intact.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31460,"byte_end":31525,"line_start":203,"line_end":203,"column_start":5,"column_end":70}},{"value":"/ * This actually registers the signal into the whole group of [`Signals`] cloned from each","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31530,"byte_end":31623,"line_start":204,"line_end":204,"column_start":5,"column_end":98}},{"value":"/ other, so any of them might start receiving the signals.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31628,"byte_end":31690,"line_start":205,"line_end":205,"column_start":5,"column_end":67}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31695,"byte_end":31698,"line_start":206,"line_end":206,"column_start":5,"column_end":8}},{"value":"/ # Panics","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31703,"byte_end":31715,"line_start":207,"line_end":207,"column_start":5,"column_end":17}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31720,"byte_end":31723,"line_start":208,"line_end":208,"column_start":5,"column_end":8}},{"value":"/ * If the given signal is [forbidden][::FORBIDDEN].","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31728,"byte_end":31782,"line_start":209,"line_end":209,"column_start":5,"column_end":59}},{"value":"/ * If the signal number is negative or larger than internal limit. The limit should be","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31787,"byte_end":31876,"line_start":210,"line_end":210,"column_start":5,"column_end":94}},{"value":"/ larger than any supported signal the OS supports.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":31881,"byte_end":31936,"line_start":211,"line_end":211,"column_start":5,"column_end":60}}]},{"kind":"Method","id":{"krate":0,"index":68},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":34913,"byte_end":34920,"line_start":290,"line_end":290,"column_start":12,"column_end":19},"name":"pending","qualname":"<Signals>::pending","value":"fn (&self) -> Pending","parent":null,"children":[],"decl_id":null,"docs":" Returns an iterator of already received signals.","sig":null,"attributes":[{"value":"/ Returns an iterator of already received signals.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":34378,"byte_end":34430,"line_start":281,"line_end":281,"column_start":5,"column_end":57}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":34435,"byte_end":34438,"line_start":282,"line_end":282,"column_start":5,"column_end":8}},{"value":"/ This returns an iterator over all the signal numbers of the signals received since last","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":34443,"byte_end":34534,"line_start":283,"line_end":283,"column_start":5,"column_end":96}},{"value":"/ time they were read (out of the set registered by this `Signals` instance). Note that they","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":34539,"byte_end":34633,"line_start":284,"line_end":284,"column_start":5,"column_end":99}},{"value":"/ are returned in arbitrary order and a signal number is returned only once even if it was","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":34638,"byte_end":34730,"line_start":285,"line_end":285,"column_start":5,"column_end":97}},{"value":"/ received multiple times.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":34735,"byte_end":34763,"line_start":286,"line_end":286,"column_start":5,"column_end":33}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":34768,"byte_end":34771,"line_start":287,"line_end":287,"column_start":5,"column_end":8}},{"value":"/ This method returns immediately (does not block) and may produce an empty iterator if there","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":34776,"byte_end":34871,"line_start":288,"line_end":288,"column_start":5,"column_end":100}},{"value":"/ are no signals ready.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":34876,"byte_end":34901,"line_start":289,"line_end":289,"column_start":5,"column_end":30}}]},{"kind":"Method","id":{"krate":0,"index":69},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35489,"byte_end":35493,"line_start":305,"line_end":305,"column_start":12,"column_end":16},"name":"wait","qualname":"<Signals>::wait","value":"fn (&self) -> Pending","parent":null,"children":[],"decl_id":null,"docs":" Waits for some signals to be available and returns an iterator.","sig":null,"attributes":[{"value":"/ Waits for some signals to be available and returns an iterator.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35035,"byte_end":35102,"line_start":296,"line_end":296,"column_start":5,"column_end":72}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35107,"byte_end":35110,"line_start":297,"line_end":297,"column_start":5,"column_end":8}},{"value":"/ This is similar to [`pending`](#method.pending). If there are no signals available, it","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35115,"byte_end":35205,"line_start":298,"line_end":298,"column_start":5,"column_end":95}},{"value":"/ tries to wait for some to arrive. However, due to implementation details, this still can","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35210,"byte_end":35302,"line_start":299,"line_end":299,"column_start":5,"column_end":97}},{"value":"/ produce an empty iterator.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35307,"byte_end":35337,"line_start":300,"line_end":300,"column_start":5,"column_end":35}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35342,"byte_end":35345,"line_start":301,"line_end":301,"column_start":5,"column_end":8}},{"value":"/ This can block for arbitrary long time.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35350,"byte_end":35393,"line_start":302,"line_end":302,"column_start":5,"column_end":48}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35398,"byte_end":35401,"line_start":303,"line_end":303,"column_start":5,"column_end":8}},{"value":"/ Note that the blocking is done in this method, not in the iterator.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35406,"byte_end":35477,"line_start":304,"line_end":304,"column_start":5,"column_end":76}}]},{"kind":"Method","id":{"krate":0,"index":70},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36961,"byte_end":36968,"line_start":347,"line_end":347,"column_start":12,"column_end":19},"name":"forever","qualname":"<Signals>::forever","value":"fn (&self) -> Forever","parent":null,"children":[],"decl_id":null,"docs":" Returns an infinite iterator over arriving signals.","sig":null,"attributes":[{"value":"/ Returns an infinite iterator over arriving signals.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35607,"byte_end":35662,"line_start":311,"line_end":311,"column_start":5,"column_end":60}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35667,"byte_end":35670,"line_start":312,"line_end":312,"column_start":5,"column_end":8}},{"value":"/ The iterator's `next()` blocks as necessary to wait for signals to arrive. This is adequate","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35675,"byte_end":35770,"line_start":313,"line_end":313,"column_start":5,"column_end":100}},{"value":"/ if you want to designate a thread solely to handling signals. If multiple signals come at","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35775,"byte_end":35868,"line_start":314,"line_end":314,"column_start":5,"column_end":98}},{"value":"/ the same time (between two values produced by the iterator), they will be returned in","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35873,"byte_end":35962,"line_start":315,"line_end":315,"column_start":5,"column_end":94}},{"value":"/ arbitrary order. Multiple instances of the same signal may be collated.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":35967,"byte_end":36042,"line_start":316,"line_end":316,"column_start":5,"column_end":80}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36047,"byte_end":36050,"line_start":317,"line_end":317,"column_start":5,"column_end":8}},{"value":"/ This is also the iterator returned by `IntoIterator` implementation on `&Signals`.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36055,"byte_end":36141,"line_start":318,"line_end":318,"column_start":5,"column_end":91}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36146,"byte_end":36149,"line_start":319,"line_end":319,"column_start":5,"column_end":8}},{"value":"/ This iterator terminates only if the [`Signals`] is explicitly [closed][Signals::close].","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36154,"byte_end":36246,"line_start":320,"line_end":320,"column_start":5,"column_end":97}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36251,"byte_end":36254,"line_start":321,"line_end":321,"column_start":5,"column_end":8}},{"value":"/ # Examples","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36259,"byte_end":36273,"line_start":322,"line_end":322,"column_start":5,"column_end":19}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36278,"byte_end":36281,"line_start":323,"line_end":323,"column_start":5,"column_end":8}},{"value":"/ ```rust","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36286,"byte_end":36297,"line_start":324,"line_end":324,"column_start":5,"column_end":16}},{"value":"/ # extern crate libc;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36302,"byte_end":36326,"line_start":325,"line_end":325,"column_start":5,"column_end":29}},{"value":"/ # extern crate signal_hook;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36331,"byte_end":36362,"line_start":326,"line_end":326,"column_start":5,"column_end":36}},{"value":"/ #","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36367,"byte_end":36372,"line_start":327,"line_end":327,"column_start":5,"column_end":10}},{"value":"/ # use std::io::Error;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36377,"byte_end":36402,"line_start":328,"line_end":328,"column_start":5,"column_end":30}},{"value":"/ # use std::thread;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36407,"byte_end":36429,"line_start":329,"line_end":329,"column_start":5,"column_end":27}},{"value":"/ #","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36434,"byte_end":36439,"line_start":330,"line_end":330,"column_start":5,"column_end":10}},{"value":"/ use signal_hook::iterator::Signals;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36444,"byte_end":36483,"line_start":331,"line_end":331,"column_start":5,"column_end":44}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36488,"byte_end":36491,"line_start":332,"line_end":332,"column_start":5,"column_end":8}},{"value":"/ # fn main() -> Result<(), Error> {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36496,"byte_end":36534,"line_start":333,"line_end":333,"column_start":5,"column_end":43}},{"value":"/ let signals = Signals::new(&[signal_hook::SIGUSR1, signal_hook::SIGUSR2])?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36539,"byte_end":36618,"line_start":334,"line_end":334,"column_start":5,"column_end":84}},{"value":"/ thread::spawn(move || {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36623,"byte_end":36650,"line_start":335,"line_end":335,"column_start":5,"column_end":32}},{"value":"/ for signal in signals.forever() {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36655,"byte_end":36696,"line_start":336,"line_end":336,"column_start":5,"column_end":46}},{"value":"/ match signal {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36701,"byte_end":36727,"line_start":337,"line_end":337,"column_start":5,"column_end":31}},{"value":"/ signal_hook::SIGUSR1 => {},","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36732,"byte_end":36775,"line_start":338,"line_end":338,"column_start":5,"column_end":48}},{"value":"/ signal_hook::SIGUSR2 => {},","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36780,"byte_end":36823,"line_start":339,"line_end":339,"column_start":5,"column_end":48}},{"value":"/ _ => unreachable!(),","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36828,"byte_end":36864,"line_start":340,"line_end":340,"column_start":5,"column_end":41}},{"value":"/ }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36869,"byte_end":36882,"line_start":341,"line_end":341,"column_start":5,"column_end":18}},{"value":"/ }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36887,"byte_end":36896,"line_start":342,"line_end":342,"column_start":5,"column_end":14}},{"value":"/ });","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36901,"byte_end":36908,"line_start":343,"line_end":343,"column_start":5,"column_end":12}},{"value":"/ # Ok(())","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36913,"byte_end":36925,"line_start":344,"line_end":344,"column_start":5,"column_end":17}},{"value":"/ # }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36930,"byte_end":36937,"line_start":345,"line_end":345,"column_start":5,"column_end":12}},{"value":"/ ```","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":36942,"byte_end":36949,"line_start":346,"line_end":346,"column_start":5,"column_end":12}}]},{"kind":"Method","id":{"krate":0,"index":71},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37165,"byte_end":37174,"line_start":357,"line_end":357,"column_start":12,"column_end":21},"name":"is_closed","qualname":"<Signals>::is_closed","value":"fn (&self) -> bool","parent":null,"children":[],"decl_id":null,"docs":" Is it closed?","sig":null,"attributes":[{"value":"/ Is it closed?","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37089,"byte_end":37106,"line_start":354,"line_end":354,"column_start":5,"column_end":22}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37111,"byte_end":37114,"line_start":355,"line_end":355,"column_start":5,"column_end":8}},{"value":"/ See [`close`][Signals::close].","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37119,"byte_end":37153,"line_start":356,"line_end":356,"column_start":5,"column_end":39}}]},{"kind":"Method","id":{"krate":0,"index":72},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38780,"byte_end":38785,"line_start":396,"line_end":396,"column_start":12,"column_end":17},"name":"close","qualname":"<Signals>::close","value":"fn (&self) -> ()","parent":null,"children":[],"decl_id":null,"docs":" Closes the instance.","sig":null,"attributes":[{"value":"/ Closes the instance.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37252,"byte_end":37276,"line_start":361,"line_end":361,"column_start":5,"column_end":29}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37281,"byte_end":37284,"line_start":362,"line_end":362,"column_start":5,"column_end":8}},{"value":"/ This is meant to signalize termination through all the interrelated instances the ones","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37289,"byte_end":37383,"line_start":363,"line_end":363,"column_start":5,"column_end":97}},{"value":"/ created by cloning the same original [`Signals`] instance (and all the [`Async`] ones","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37388,"byte_end":37477,"line_start":364,"line_end":364,"column_start":5,"column_end":94}},{"value":"/ created from them). After calling close:","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37482,"byte_end":37526,"line_start":365,"line_end":365,"column_start":5,"column_end":49}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37531,"byte_end":37534,"line_start":366,"line_end":366,"column_start":5,"column_end":8}},{"value":"/ * [`is_closed`][Signals::is_closed] will return true.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37539,"byte_end":37596,"line_start":367,"line_end":367,"column_start":5,"column_end":62}},{"value":"/ * All currently blocking operations on all threads and all the instances are interrupted","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37601,"byte_end":37693,"line_start":368,"line_end":368,"column_start":5,"column_end":97}},{"value":"/ and terminate.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37698,"byte_end":37718,"line_start":369,"line_end":369,"column_start":5,"column_end":25}},{"value":"/ * Any further operations will never block.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37723,"byte_end":37769,"line_start":370,"line_end":370,"column_start":5,"column_end":51}},{"value":"/ * Further signals may or may not be returned from the iterators. However, if any are","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37774,"byte_end":37862,"line_start":371,"line_end":371,"column_start":5,"column_end":93}},{"value":"/ returned, these are real signals that happened.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37867,"byte_end":37920,"line_start":372,"line_end":372,"column_start":5,"column_end":58}},{"value":"/ * The [`forever`][Signals::forever] terminates (follows from the above).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":37925,"byte_end":38001,"line_start":373,"line_end":373,"column_start":5,"column_end":81}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38006,"byte_end":38009,"line_start":374,"line_end":374,"column_start":5,"column_end":8}},{"value":"/ The goal is to be able to shut down any background thread that handles only the signals.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38014,"byte_end":38106,"line_start":375,"line_end":375,"column_start":5,"column_end":97}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38111,"byte_end":38114,"line_start":376,"line_end":376,"column_start":5,"column_end":8}},{"value":"/ ```rust","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38119,"byte_end":38130,"line_start":377,"line_end":377,"column_start":5,"column_end":16}},{"value":"/ # use signal_hook::iterator::Signals;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38135,"byte_end":38176,"line_start":378,"line_end":378,"column_start":5,"column_end":46}},{"value":"/ # use signal_hook::SIGUSR1;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38181,"byte_end":38212,"line_start":379,"line_end":379,"column_start":5,"column_end":36}},{"value":"/ # fn main() -> Result<(), std::io::Error> {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38217,"byte_end":38264,"line_start":380,"line_end":380,"column_start":5,"column_end":52}},{"value":"/ let signals = Signals::new(&[SIGUSR1])?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38269,"byte_end":38313,"line_start":381,"line_end":381,"column_start":5,"column_end":49}},{"value":"/ let signals_bg = signals.clone();","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38318,"byte_end":38355,"line_start":382,"line_end":382,"column_start":5,"column_end":42}},{"value":"/ let thread = std::thread::spawn(move || {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38360,"byte_end":38405,"line_start":383,"line_end":383,"column_start":5,"column_end":50}},{"value":"/ for signal in &signals_bg {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38410,"byte_end":38445,"line_start":384,"line_end":384,"column_start":5,"column_end":40}},{"value":"/ // Whatever with the signal","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38450,"byte_end":38489,"line_start":385,"line_end":385,"column_start":5,"column_end":44}},{"value":"/ # let _ = signal;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38494,"byte_end":38521,"line_start":386,"line_end":386,"column_start":5,"column_end":32}},{"value":"/ }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38526,"byte_end":38535,"line_start":387,"line_end":387,"column_start":5,"column_end":14}},{"value":"/ });","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38540,"byte_end":38547,"line_start":388,"line_end":388,"column_start":5,"column_end":12}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38552,"byte_end":38555,"line_start":389,"line_end":389,"column_start":5,"column_end":8}},{"value":"/ signals.close();","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38560,"byte_end":38580,"line_start":390,"line_end":390,"column_start":5,"column_end":25}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38585,"byte_end":38588,"line_start":391,"line_end":391,"column_start":5,"column_end":8}},{"value":"/ // The thread will terminate on its own now (the for cycle runs out of signals).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38593,"byte_end":38677,"line_start":392,"line_end":392,"column_start":5,"column_end":89}},{"value":"/ thread.join().expect(\"background thread panicked\");","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38682,"byte_end":38737,"line_start":393,"line_end":393,"column_start":5,"column_end":60}},{"value":"/ # Ok(()) }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38742,"byte_end":38756,"line_start":394,"line_end":394,"column_start":5,"column_end":19}},{"value":"/ ```","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":38761,"byte_end":38768,"line_start":395,"line_end":395,"column_start":5,"column_end":12}}]},{"kind":"Struct","id":{"krate":0,"index":78},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39248,"byte_end":39255,"line_start":414,"line_end":414,"column_start":12,"column_end":19},"name":"Pending","qualname":"::iterator::Pending","value":"","parent":null,"children":[],"decl_id":null,"docs":" The iterator of one batch of signals.","sig":null,"attributes":[{"value":"/ The iterator of one batch of signals.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39056,"byte_end":39097,"line_start":410,"line_end":410,"column_start":1,"column_end":42}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39098,"byte_end":39101,"line_start":411,"line_end":411,"column_start":1,"column_end":4}},{"value":"/ This is returned by the [`pending`](struct.Signals.html#method.pending) and","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39102,"byte_end":39181,"line_start":412,"line_end":412,"column_start":1,"column_end":80}},{"value":"/ [`wait`](struct.Signals.html#method.wait) methods.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39182,"byte_end":39236,"line_start":413,"line_end":413,"column_start":1,"column_end":55}}]},{"kind":"Struct","id":{"krate":0,"index":86},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39894,"byte_end":39901,"line_start":437,"line_end":437,"column_start":12,"column_end":19},"name":"Forever","qualname":"::iterator::Forever","value":"Forever { }","parent":null,"children":[{"krate":0,"index":88},{"krate":0,"index":89}],"decl_id":null,"docs":" The infinite iterator of signals.","sig":null,"attributes":[{"value":"/ The infinite iterator of signals.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39684,"byte_end":39721,"line_start":433,"line_end":433,"column_start":1,"column_end":38}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39722,"byte_end":39725,"line_start":434,"line_end":434,"column_start":1,"column_end":4}},{"value":"/ It is returned by the [`forever`](struct.Signals.html#method.forever) and by the `IntoIterator`","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39726,"byte_end":39825,"line_start":435,"line_end":435,"column_start":1,"column_end":100}},{"value":"/ implementation of [`&Signals`](struct.Signals.html).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39826,"byte_end":39882,"line_start":436,"line_end":436,"column_start":1,"column_end":57}}]},{"kind":"Mod","id":{"krate":0,"index":94},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":0,"byte_end":0,"line_start":1,"line_end":1,"column_start":1,"column_end":1},"name":"pipe","qualname":"::pipe","value":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","parent":null,"children":[{"krate":0,"index":95},{"krate":0,"index":96},{"krate":0,"index":99},{"krate":0,"index":102},{"krate":0,"index":103},{"krate":0,"index":106},{"krate":0,"index":108},{"krate":0,"index":110},{"krate":0,"index":112},{"krate":0,"index":113},{"krate":0,"index":115}],"decl_id":null,"docs":" Module with the self-pipe pattern.","sig":null,"attributes":[{"value":"cfg(not (windows))","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8030,"byte_end":8050,"line_start":167,"line_end":167,"column_start":1,"column_end":21}},{"value":"! Module with the self-pipe pattern.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":48639,"byte_end":48677,"line_start":1,"line_end":1,"column_start":1,"column_end":39}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":48678,"byte_end":48681,"line_start":2,"line_end":2,"column_start":1,"column_end":4}},{"value":"! One of the common patterns around signals is to have a pipe with both ends in the same program.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":48682,"byte_end":48781,"line_start":3,"line_end":3,"column_start":1,"column_end":100}},{"value":"! Whenever there's a signal, the signal handler writes one byte of garbage data to the write end,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":48782,"byte_end":48881,"line_start":4,"line_end":4,"column_start":1,"column_end":100}},{"value":"! unless the pipe's already full. The application then can handle the read end.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":48882,"byte_end":48963,"line_start":5,"line_end":5,"column_start":1,"column_end":82}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":48964,"byte_end":48967,"line_start":6,"line_end":6,"column_start":1,"column_end":4}},{"value":"! This has two advantages. First, the real signal action moves outside of the signal handler","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":48968,"byte_end":49062,"line_start":7,"line_end":7,"column_start":1,"column_end":95}},{"value":"! where there are a lot less restrictions. Second, it fits nicely in all kinds of asynchronous","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49063,"byte_end":49159,"line_start":8,"line_end":8,"column_start":1,"column_end":97}},{"value":"! loops and has less chance of race conditions.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49160,"byte_end":49209,"line_start":9,"line_end":9,"column_start":1,"column_end":50}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49210,"byte_end":49213,"line_start":10,"line_end":10,"column_start":1,"column_end":4}},{"value":"! This module offers premade functions for the write end (and doesn't insist that it must be a","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49214,"byte_end":49310,"line_start":11,"line_end":11,"column_start":1,"column_end":97}},{"value":"! pipe anything that can be written to is fine sockets too, therefore `UnixStream::pair` is a","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49311,"byte_end":49414,"line_start":12,"line_end":12,"column_start":1,"column_end":100}},{"value":"! good candidate).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49415,"byte_end":49435,"line_start":13,"line_end":13,"column_start":1,"column_end":21}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49436,"byte_end":49439,"line_start":14,"line_end":14,"column_start":1,"column_end":4}},{"value":"! If you want to integrate with some asynchronous library, plugging streams from `mio-uds` or","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49440,"byte_end":49535,"line_start":15,"line_end":15,"column_start":1,"column_end":96}},{"value":"! `tokio-uds` libraries should work.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49536,"byte_end":49574,"line_start":16,"line_end":16,"column_start":1,"column_end":39}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49575,"byte_end":49578,"line_start":17,"line_end":17,"column_start":1,"column_end":4}},{"value":"! If it looks too low-level for your needs, the [`iterator`](../iterator/) module contains some","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49579,"byte_end":49676,"line_start":18,"line_end":18,"column_start":1,"column_end":98}},{"value":"! higher-lever interface that also uses a self-pipe pattern under the hood.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49677,"byte_end":49754,"line_start":19,"line_end":19,"column_start":1,"column_end":78}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49755,"byte_end":49758,"line_start":20,"line_end":20,"column_start":1,"column_end":4}},{"value":"! # Correct order of handling","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49759,"byte_end":49790,"line_start":21,"line_end":21,"column_start":1,"column_end":32}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49791,"byte_end":49794,"line_start":22,"line_end":22,"column_start":1,"column_end":4}},{"value":"! A care needs to be taken to avoid race conditions, especially when handling the same signal in","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49795,"byte_end":49893,"line_start":23,"line_end":23,"column_start":1,"column_end":99}},{"value":"! a loop. Specifically, another signal might come when the action for the previous signal is","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49894,"byte_end":49988,"line_start":24,"line_end":24,"column_start":1,"column_end":95}},{"value":"! being taken. The correct order is first to clear the content of the pipe (read some/all data","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":49989,"byte_end":50085,"line_start":25,"line_end":25,"column_start":1,"column_end":97}},{"value":"! from it) and then take the action. This way a spurious wakeup can happen (the pipe could wake","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50086,"byte_end":50183,"line_start":26,"line_end":26,"column_start":1,"column_end":98}},{"value":"! up even when no signal came after the signal was taken, because it arrived between cleaning","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50184,"byte_end":50283,"line_start":27,"line_end":27,"column_start":1,"column_end":98}},{"value":"! the pipe and taking the action). Note that some OS primitives (eg. `select`) suffer from","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50284,"byte_end":50376,"line_start":28,"line_end":28,"column_start":1,"column_end":93}},{"value":"! spurious wakeups themselves (they can claim a FD is readable when it is not true) and blocking","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50377,"byte_end":50475,"line_start":29,"line_end":29,"column_start":1,"column_end":99}},{"value":"! `read` might return prematurely (with eg. `EINTR`).","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50476,"byte_end":50531,"line_start":30,"line_end":30,"column_start":1,"column_end":56}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50532,"byte_end":50535,"line_start":31,"line_end":31,"column_start":1,"column_end":4}},{"value":"! The reverse order of first taking the action and then clearing the pipe might lose signals,","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50536,"byte_end":50631,"line_start":32,"line_end":32,"column_start":1,"column_end":96}},{"value":"! which is usually worse.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50632,"byte_end":50659,"line_start":33,"line_end":33,"column_start":1,"column_end":28}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50660,"byte_end":50663,"line_start":34,"line_end":34,"column_start":1,"column_end":4}},{"value":"! This is not a problem with blocking on reading from the pipe (because both the blocking and","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50664,"byte_end":50759,"line_start":35,"line_end":35,"column_start":1,"column_end":96}},{"value":"! cleaning is the same action), but in case of asynchronous handling it matters.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50760,"byte_end":50842,"line_start":36,"line_end":36,"column_start":1,"column_end":83}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50843,"byte_end":50846,"line_start":37,"line_end":37,"column_start":1,"column_end":4}},{"value":"! If you want to combine setting some flags with a self-pipe pattern, the flag needs to be set","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50847,"byte_end":50943,"line_start":38,"line_end":38,"column_start":1,"column_end":97}},{"value":"! first, then the pipe written. On the read end, first the pipe needs to be cleaned, then the","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":50944,"byte_end":51039,"line_start":39,"line_end":39,"column_start":1,"column_end":96}},{"value":"! flag and then the action taken. This is what the [`Signals`](../iterator/struct.Signals.html)","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51040,"byte_end":51137,"line_start":40,"line_end":40,"column_start":1,"column_end":98}},{"value":"! structure does internally.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51138,"byte_end":51168,"line_start":41,"line_end":41,"column_start":1,"column_end":31}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51169,"byte_end":51172,"line_start":42,"line_end":42,"column_start":1,"column_end":4}},{"value":"! # Write collating","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51173,"byte_end":51194,"line_start":43,"line_end":43,"column_start":1,"column_end":22}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51195,"byte_end":51198,"line_start":44,"line_end":44,"column_start":1,"column_end":4}},{"value":"! While unlikely if handled correctly, it is possible the write end is full when a signal comes.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51199,"byte_end":51297,"line_start":45,"line_end":45,"column_start":1,"column_end":99}},{"value":"! In such case the signal handler simply does nothing. If the write end is full, the read end is","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51298,"byte_end":51396,"line_start":46,"line_end":46,"column_start":1,"column_end":99}},{"value":"! readable and therefore will wake up. On the other hand, blocking in the signal handler would","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51397,"byte_end":51493,"line_start":47,"line_end":47,"column_start":1,"column_end":97}},{"value":"! definitely be a bad idea.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51494,"byte_end":51523,"line_start":48,"line_end":48,"column_start":1,"column_end":30}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51524,"byte_end":51527,"line_start":49,"line_end":49,"column_start":1,"column_end":4}},{"value":"! However, this also means the number of bytes read from the end might be lower than the number","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51528,"byte_end":51625,"line_start":50,"line_end":50,"column_start":1,"column_end":98}},{"value":"! of signals that arrived. This should not generally be a problem, since the OS already collates","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51626,"byte_end":51724,"line_start":51,"line_end":51,"column_start":1,"column_end":99}},{"value":"! signals of the same kind together.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51725,"byte_end":51763,"line_start":52,"line_end":52,"column_start":1,"column_end":39}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51764,"byte_end":51767,"line_start":53,"line_end":53,"column_start":1,"column_end":4}},{"value":"! # Examples","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51768,"byte_end":51782,"line_start":54,"line_end":54,"column_start":1,"column_end":15}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51783,"byte_end":51786,"line_start":55,"line_end":55,"column_start":1,"column_end":4}},{"value":"! This example waits for at last one `SIGUSR1` signal to come before continuing (and","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51787,"byte_end":51873,"line_start":56,"line_end":56,"column_start":1,"column_end":87}},{"value":"! terminating). It sends the signal to itself, so it correctly terminates.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51874,"byte_end":51950,"line_start":57,"line_end":57,"column_start":1,"column_end":77}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51951,"byte_end":51954,"line_start":58,"line_end":58,"column_start":1,"column_end":4}},{"value":"! ```rust","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51955,"byte_end":51966,"line_start":59,"line_end":59,"column_start":1,"column_end":12}},{"value":"! extern crate libc;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51967,"byte_end":51989,"line_start":60,"line_end":60,"column_start":1,"column_end":23}},{"value":"! extern crate signal_hook;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":51990,"byte_end":52019,"line_start":61,"line_end":61,"column_start":1,"column_end":30}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52020,"byte_end":52023,"line_start":62,"line_end":62,"column_start":1,"column_end":4}},{"value":"! use std::io::{Error, Read};","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52024,"byte_end":52055,"line_start":63,"line_end":63,"column_start":1,"column_end":32}},{"value":"! use std::os::unix::net::UnixStream;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52056,"byte_end":52095,"line_start":64,"line_end":64,"column_start":1,"column_end":40}},{"value":"!","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52096,"byte_end":52099,"line_start":65,"line_end":65,"column_start":1,"column_end":4}},{"value":"! fn main() -> Result<(), Error> {","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52100,"byte_end":52136,"line_start":66,"line_end":66,"column_start":1,"column_end":37}},{"value":"! let (mut read, write) = UnixStream::pair()?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52137,"byte_end":52189,"line_start":67,"line_end":67,"column_start":1,"column_end":53}},{"value":"! signal_hook::pipe::register(signal_hook::SIGUSR1, write)?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52190,"byte_end":52256,"line_start":68,"line_end":68,"column_start":1,"column_end":67}},{"value":"! // This will write into the pipe write end through the signal handler","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52257,"byte_end":52334,"line_start":69,"line_end":69,"column_start":1,"column_end":78}},{"value":"! unsafe { libc::raise(signal_hook::SIGUSR1) };","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52335,"byte_end":52388,"line_start":70,"line_end":70,"column_start":1,"column_end":54}},{"value":"! let mut buff = [0];","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52389,"byte_end":52416,"line_start":71,"line_end":71,"column_start":1,"column_end":28}},{"value":"! read.read_exact(&mut buff)?;","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52417,"byte_end":52453,"line_start":72,"line_end":72,"column_start":1,"column_end":37}},{"value":"! println!(\"Happily terminating\");","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52454,"byte_end":52494,"line_start":73,"line_end":73,"column_start":1,"column_end":41}},{"value":"! Ok(())","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52495,"byte_end":52509,"line_start":74,"line_end":74,"column_start":1,"column_end":15}},{"value":"! }","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52510,"byte_end":52515,"line_start":75,"line_end":75,"column_start":1,"column_end":6}}]},{"kind":"Function","id":{"krate":0,"index":113},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":54592,"byte_end":54604,"line_start":140,"line_end":140,"column_start":8,"column_end":20},"name":"register_raw","qualname":"::pipe::register_raw","value":"fn (signal: c_int, pipe: RawFd) -> Result<SigId, Error>","parent":null,"children":[],"decl_id":null,"docs":" Registers a write to a self-pipe whenever there's the signal.","sig":null,"attributes":[{"value":"/ Registers a write to a self-pipe whenever there's the signal.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":54264,"byte_end":54329,"line_start":133,"line_end":133,"column_start":1,"column_end":66}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":54330,"byte_end":54333,"line_start":134,"line_end":134,"column_start":1,"column_end":4}},{"value":"/ In this case, the pipe is taken as the `RawFd`. It is still the caller's responsibility to","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":54334,"byte_end":54428,"line_start":135,"line_end":135,"column_start":1,"column_end":95}},{"value":"/ close it.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":54429,"byte_end":54442,"line_start":136,"line_end":136,"column_start":1,"column_end":14}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":54443,"byte_end":54446,"line_start":137,"line_end":137,"column_start":1,"column_end":4}},{"value":"/ Note that passing the wrong file descriptor won't cause UB, but can still lead to severe bugs ","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":54447,"byte_end":54548,"line_start":138,"line_end":138,"column_start":1,"column_end":100}},{"value":"/ like data corruptions in files.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":54549,"byte_end":54584,"line_start":139,"line_end":139,"column_start":1,"column_end":36}}]},{"kind":"Function","id":{"krate":0,"index":115},"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":55411,"byte_end":55419,"line_start":160,"line_end":160,"column_start":8,"column_end":16},"name":"register","qualname":"::pipe::register","value":"fn <P> (signal: c_int, pipe: P) -> Result<SigId, Error>","parent":null,"children":[],"decl_id":null,"docs":" Registers a write to a self-pipe whenever there's the signal.","sig":null,"attributes":[{"value":"/ Registers a write to a self-pipe whenever there's the signal.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":55094,"byte_end":55159,"line_start":154,"line_end":154,"column_start":1,"column_end":66}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":55160,"byte_end":55163,"line_start":155,"line_end":155,"column_start":1,"column_end":4}},{"value":"/ The ownership of pipe is taken and will be closed whenever the created action is unregistered.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":55164,"byte_end":55262,"line_start":156,"line_end":156,"column_start":1,"column_end":99}},{"value":"/","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":55263,"byte_end":55266,"line_start":157,"line_end":157,"column_start":1,"column_end":4}},{"value":"/ Note that if you want to register the same pipe for multiple signals, there's `try_clone`","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":55267,"byte_end":55360,"line_start":158,"line_end":158,"column_start":1,"column_end":94}},{"value":"/ method on many unix socket primitives.","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":55361,"byte_end":55403,"line_start":159,"line_end":159,"column_start":1,"column_end":43}}]}],"impls":[{"id":0,"kind":"Inherent","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":27282,"byte_end":27287,"line_start":76,"line_end":76,"column_start":6,"column_end":11},"value":"","parent":null,"children":[{"krate":0,"index":53}],"docs":"","sig":null,"attributes":[]},{"id":1,"kind":"Direct","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":27957,"byte_end":27974,"line_start":98,"line_end":98,"column_start":15,"column_end":32},"value":"","parent":null,"children":[{"krate":0,"index":55}],"docs":"","sig":null,"attributes":[]},{"id":2,"kind":"Inherent","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":30230,"byte_end":30237,"line_start":167,"line_end":167,"column_start":6,"column_end":13},"value":"","parent":null,"children":[{"krate":0,"index":58},{"krate":0,"index":63},{"krate":0,"index":65},{"krate":0,"index":68},{"krate":0,"index":69},{"krate":0,"index":70},{"krate":0,"index":71},{"krate":0,"index":72}],"docs":"","sig":null,"attributes":[]},{"id":3,"kind":"Direct","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39317,"byte_end":39324,"line_start":416,"line_end":416,"column_start":23,"column_end":30},"value":"","parent":null,"children":[{"krate":0,"index":84},{"krate":0,"index":85}],"docs":"","sig":null,"attributes":[]},{"id":4,"kind":"Direct","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39982,"byte_end":39989,"line_start":442,"line_end":442,"column_start":23,"column_end":30},"value":"","parent":null,"children":[{"krate":0,"index":92},{"krate":0,"index":93}],"docs":"","sig":null,"attributes":[]},{"id":5,"kind":"Inherent","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52653,"byte_end":52660,"line_start":86,"line_end":86,"column_start":6,"column_end":13},"value":"","parent":null,"children":[{"krate":0,"index":107}],"docs":"","sig":null,"attributes":[]},{"id":6,"kind":"Direct","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":53225,"byte_end":53232,"line_start":103,"line_end":103,"column_start":18,"column_end":25},"value":"","parent":null,"children":[{"krate":0,"index":109}],"docs":"","sig":null,"attributes":[]},{"id":7,"kind":"Direct","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":53308,"byte_end":53315,"line_start":109,"line_end":109,"column_start":15,"column_end":22},"value":"","parent":null,"children":[{"krate":0,"index":111}],"docs":"","sig":null,"attributes":[]}],"refs":[{"kind":"Mod","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7968,"byte_end":7975,"line_start":163,"line_end":163,"column_start":9,"column_end":16},"ref_id":{"krate":0,"index":5}},{"kind":"Mod","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":7985,"byte_end":7989,"line_start":164,"line_end":164,"column_start":9,"column_end":13},"ref_id":{"krate":0,"index":21}},{"kind":"Mod","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8020,"byte_end":8028,"line_start":166,"line_end":166,"column_start":9,"column_end":17},"ref_id":{"krate":0,"index":34}},{"kind":"Mod","span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/lib.rs","byte_start":8059,"byte_end":8063,"line_start":168,"line_end":168,"column_start":9,"column_end":13},"ref_id":{"krate":0,"index":94}}],"macro_refs":[],"relations":[{"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":27282,"byte_end":27287,"line_start":76,"line_end":76,"column_start":6,"column_end":11},"kind":{"Impl":{"id":0}},"from":{"krate":0,"index":145},"to":{"krate":4294967295,"index":4294967295}},{"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":27957,"byte_end":27974,"line_start":98,"line_end":98,"column_start":15,"column_end":32},"kind":{"Impl":{"id":1}},"from":{"krate":0,"index":152},"to":{"krate":2,"index":2075}},{"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":30230,"byte_end":30237,"line_start":167,"line_end":167,"column_start":6,"column_end":13},"kind":{"Impl":{"id":2}},"from":{"krate":0,"index":157},"to":{"krate":4294967295,"index":4294967295}},{"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39317,"byte_end":39324,"line_start":416,"line_end":416,"column_start":23,"column_end":30},"kind":{"Impl":{"id":3}},"from":{"krate":0,"index":78},"to":{"krate":2,"index":4772}},{"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/iterator.rs","byte_start":39982,"byte_end":39989,"line_start":442,"line_end":442,"column_start":23,"column_end":30},"kind":{"Impl":{"id":4}},"from":{"krate":0,"index":86},"to":{"krate":2,"index":4772}},{"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":52653,"byte_end":52660,"line_start":86,"line_end":86,"column_start":6,"column_end":13},"kind":{"Impl":{"id":5}},"from":{"krate":0,"index":103},"to":{"krate":4294967295,"index":4294967295}},{"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":53225,"byte_end":53232,"line_start":103,"line_end":103,"column_start":18,"column_end":25},"kind":{"Impl":{"id":6}},"from":{"krate":0,"index":103},"to":{"krate":1,"index":8218}},{"span":{"file_name":"/Users/prabhueshwarla/.cargo/registry/src/github.com-1ecc6299db9ec823/signal-hook-0.1.16/src/pipe.rs","byte_start":53308,"byte_end":53315,"line_start":109,"line_end":109,"column_start":15,"column_end":22},"kind":{"Impl":{"id":7}},"from":{"krate":0,"index":103},"to":{"krate":2,"index":2075}}]}