[package] name = "sem_safe" version = "0.2.0" authors = ["Derick Eddington"] edition = "2021" rust-version = "1.75" description = "Safe usage of POSIX Semaphores (`sem_post`, `sem_wait`, etc)." keywords = ["semaphore", "synchronization", "signals", "unix", "no_std"] categories = ["api-bindings", "concurrency", "os::unix-apis", "no-std::no-alloc"] license = "Unlicense" repository = "https://app.radicle.xyz/nodes/ash.radicle.garden/rad:zUAeNZN24JCzNQ9YVkoxNbw8c8TU" readme = "README.md" [features] default = ["unnamed", "named", "anonymous", "plaster"] unnamed = [] # On MacOS, ignored, because not available. named = ["errno"] anonymous = ["named", "getrandom", "base64"] plaster = [] # Provides a uniform "non-named" semaphore abstraction across Mac and all other OSs. [dependencies] # These crates are only internal implementation details that could be replaced with others that # provide equivalent capabilities as needed. base64 = { version = "0.22.1", default-features = false, optional = true } errno = { version = "0.3.9", default-features = false, optional = true } getrandom = { version = "0.2.15", default-features = false, features = ["rdrand"], optional = true } libc = { version = "0.2.155", default-features = false } [dev-dependencies] cfg-if = "1.0.0" errno = { version = "0.3.9", default-features = false } [lints.rust] unstable_features = "forbid" # Warn about desired lints that would otherwise be allowed by default. # Groups future_incompatible = { level = "warn", priority = -1 } nonstandard_style = { level = "warn", priority = -1 } rust_2018_compatibility = { level = "warn", priority = -1 } rust_2018_idioms = { level = "warn", priority = -1 } rust_2021_compatibility = { level = "warn", priority = -1 } unused = { level = "warn", priority = -1 } # Individual lints not included in above groups and desired. let_underscore_drop = "warn" macro_use_extern_crate = "warn" meta_variable_misuse = "warn" missing_copy_implementations = "warn" missing_debug_implementations = "warn" missing_docs = "warn" #missing_doc_code_examples = "warn" # maybe someday redundant_lifetimes = "warn" single_use_lifetimes = "warn" trivial_casts = "warn" trivial_numeric_casts = "warn" unit_bindings = "warn" unnameable_types = "warn" unreachable_pub = "warn" unused_crate_dependencies = "warn" unused_extern_crates = "warn" unused_import_braces = "warn" unused_lifetimes = "warn" unused_macro_rules = "warn" unused_qualifications = "warn" unused_results = "warn" variant_size_differences = "warn" [lints.clippy] # Groups pedantic = { level = "warn", priority = -1 } restriction = { level = "warn", priority = -1 } cargo = { level = "warn", priority = -1 } # Exclude (re-allow) undesired lints included in above groups. absolute_paths = "allow" blanket_clippy_restriction_lints = "allow" default_numeric_fallback = "allow" deref_by_slicing = "allow" disallowed_script_idents = "allow" impl_trait_in_params = "allow" implicit_return = "allow" min_ident_chars = "allow" missing_docs_in_private_items = "allow" missing_trait_methods = "allow" module_name_repetitions = "allow" non_ascii_literal = "allow" pattern_type_mismatch = "allow" pub_use = "allow" pub_with_shorthand = "allow" question_mark_used = "allow" self_named_module_files = "allow" semicolon_outside_block = "allow" separated_literal_suffix = "allow" single_call_fn = "allow" single_char_lifetime_names = "allow" shadow_reuse = "allow" [lints.rustdoc] private_doc_tests = "warn" [package.metadata.docs.rs] all-features = true default-target = "x86_64-unknown-linux-gnu" # Must exclude Windows and any other non-POSIX OSs. Might as well include those I've tested on. targets = [ "x86_64-apple-darwin", "x86_64-unknown-freebsd", "x86_64-unknown-illumos", "x86_64-unknown-linux-musl", "x86_64-unknown-netbsd", "x86_64-unknown-openbsd", ]