[package] name = "bitcoin-units" version = "0.2.0" authors = ["Andrew Poelstra "] license = "CC0-1.0" repository = "https://github.com/rust-bitcoin/rust-bitcoin/" description = "Basic Bitcoin numeric units such as amount" categories = ["cryptography::cryptocurrencies"] keywords = ["bitcoin", "newtypes", "no-std"] readme = "README.md" edition = "2021" rust-version = "1.63.0" exclude = ["tests", "contrib"] [features] default = ["std"] std = ["alloc", "internals/std"] alloc = ["internals/alloc","serde?/alloc"] [dependencies] internals = { package = "bitcoin-internals", version = "0.4.0" } serde = { version = "1.0.103", default-features = false, features = ["derive"], optional = true } arbitrary = { version = "1.4", optional = true } [dev-dependencies] internals = { package = "bitcoin-internals", version = "0.4.0", features = ["test-serde"] } serde_test = "1.0" serde_json = "1.0" [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] [lints.rust] unexpected_cfgs = { level = "deny", check-cfg = ['cfg(kani)'] } [lints.clippy] # Exclude lints we don't think are valuable. needless_question_mark = "allow" # https://github.com/rust-bitcoin/rust-bitcoin/pull/2134 manual_range_contains = "allow" # More readable than clippy's format. # Exhaustive list of pedantic clippy lints assigning_clones = "warn" bool_to_int_with_if = "warn" borrow_as_ptr = "warn" case_sensitive_file_extension_comparisons = "warn" cast_lossless = "warn" cast_possible_truncation = "allow" # All casts should include a code comment (except test code). cast_possible_wrap = "allow" # Same as above re code comment. cast_precision_loss = "warn" cast_ptr_alignment = "warn" cast_sign_loss = "allow" # All casts should include a code comment (except in test code). checked_conversions = "warn" cloned_instead_of_copied = "warn" copy_iterator = "warn" default_trait_access = "warn" doc_link_with_quotes = "warn" doc_markdown = "warn" empty_enum = "warn" enum_glob_use = "warn" expl_impl_clone_on_copy = "warn" explicit_deref_methods = "warn" explicit_into_iter_loop = "warn" explicit_iter_loop = "warn" filter_map_next = "warn" flat_map_option = "warn" float_cmp = "allow" # Bitcoin floats are typically limited to 8 decimal places and we want them exact. fn_params_excessive_bools = "warn" from_iter_instead_of_collect = "warn" if_not_else = "warn" ignored_unit_patterns = "warn" implicit_clone = "warn" implicit_hasher = "warn" inconsistent_struct_constructor = "warn" index_refutable_slice = "warn" inefficient_to_string = "warn" inline_always = "warn" into_iter_without_iter = "warn" invalid_upcast_comparisons = "warn" items_after_statements = "warn" iter_filter_is_ok = "warn" iter_filter_is_some = "warn" iter_not_returning_iterator = "warn" iter_without_into_iter = "warn" large_digit_groups = "warn" large_futures = "warn" large_stack_arrays = "warn" large_types_passed_by_value = "warn" linkedlist = "warn" macro_use_imports = "warn" manual_assert = "warn" manual_instant_elapsed = "warn" manual_is_power_of_two = "warn" manual_is_variant_and = "warn" manual_let_else = "warn" manual_ok_or = "warn" manual_string_new = "warn" many_single_char_names = "warn" map_unwrap_or = "warn" match_bool = "allow" # Adds extra indentation and LOC. match_on_vec_items = "warn" match_same_arms = "allow" # Collapses things that are conceptually unrelated to each other. match_wild_err_arm = "warn" match_wildcard_for_single_variants = "warn" maybe_infinite_iter = "warn" mismatching_type_param_order = "warn" missing_errors_doc = "allow" # TODO: Still needs considering. missing_fields_in_debug = "warn" missing_panics_doc = "allow" # TODO: Still needs considering. must_use_candidate = "allow" # Useful for audit but many false positives. mut_mut = "warn" naive_bytecount = "warn" needless_bitwise_bool = "warn" needless_continue = "warn" needless_for_each = "warn" needless_pass_by_value = "warn" needless_raw_string_hashes = "warn" no_effect_underscore_binding = "warn" no_mangle_with_rust_abi = "warn" option_as_ref_cloned = "warn" option_option = "warn" ptr_as_ptr = "warn" ptr_cast_constness = "warn" pub_underscore_fields = "warn" range_minus_one = "warn" range_plus_one = "warn" redundant_closure_for_method_calls = "warn" redundant_else = "warn" ref_as_ptr = "warn" ref_binding_to_reference = "warn" ref_option = "allow" # TODO: Still neds considering. ref_option_ref = "warn" return_self_not_must_use = "warn" same_functions_in_if_condition = "warn" semicolon_if_nothing_returned = "warn" should_panic_without_expect = "warn" similar_names = "allow" # Too many (subjectively) false positives. single_char_pattern = "warn" single_match_else = "warn" stable_sort_primitive = "warn" str_split_at_newline = "warn" string_add_assign = "warn" struct_excessive_bools = "warn" struct_field_names = "warn" too_many_lines = "warn" transmute_ptr_to_ptr = "warn" trivially_copy_pass_by_ref = "warn" unchecked_duration_subtraction = "warn" unicode_not_nfc = "warn" uninlined_format_args = "allow" # This is a subjective style choice. unnecessary_box_returns = "warn" unnecessary_join = "warn" unnecessary_literal_bound = "warn" unnecessary_wraps = "warn" unnested_or_patterns = "warn" unreadable_literal = "warn" unsafe_derive_deserialize = "warn" unused_async = "warn" unused_self = "warn" used_underscore_binding = "warn" used_underscore_items = "warn" verbose_bit_mask = "warn" wildcard_imports = "warn" zero_sized_map_values = "warn"