[INFO] fetching crate rust-persian-tools 1.1.4...
[INFO] testing rust-persian-tools-1.1.4 against try#db823df02fd0c2cf67b43025ac3fef3f2d743245 for pr-150681
[INFO] extracting crate rust-persian-tools 1.1.4 into /workspace/builds/worker-1-tc2/source
[INFO] started tweaking crates.io crate rust-persian-tools 1.1.4
[INFO] finished tweaking crates.io crate rust-persian-tools 1.1.4
[INFO] tweaked toml for crates.io crate rust-persian-tools 1.1.4 written to /workspace/builds/worker-1-tc2/source/Cargo.toml
[INFO] validating manifest of crates.io crate rust-persian-tools 1.1.4 on toolchain db823df02fd0c2cf67b43025ac3fef3f2d743245
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "generate-lockfile" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]      Locking 48 packages to latest compatible versions
[INFO] [stderr]       Adding thiserror v1.0.69 (available: v2.0.17)
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 53489a5ad67f8a133bc7cea684eb9b465bb739fe05c495a5cb28499a8cd743e0
[INFO] running `Command { std: "docker" "start" "-a" "53489a5ad67f8a133bc7cea684eb9b465bb739fe05c495a5cb28499a8cd743e0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "53489a5ad67f8a133bc7cea684eb9b465bb739fe05c495a5cb28499a8cd743e0", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "53489a5ad67f8a133bc7cea684eb9b465bb739fe05c495a5cb28499a8cd743e0", kill_on_drop: false }`
[INFO] [stdout] 53489a5ad67f8a133bc7cea684eb9b465bb739fe05c495a5cb28499a8cd743e0
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] bf6f8efe50bc3ba79b4587520df904b5fe9e85a6ebebbc13f5fbc894ffad46f2
[INFO] running `Command { std: "docker" "start" "-a" "bf6f8efe50bc3ba79b4587520df904b5fe9e85a6ebebbc13f5fbc894ffad46f2", kill_on_drop: false }`
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling num-derive v0.4.2
[INFO] [stderr]    Compiling num-bigint v0.4.6
[INFO] [stderr]    Compiling num-iter v0.1.45
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling num v0.4.3
[INFO] [stderr]    Compiling rust-persian-tools v1.1.4 (/opt/rustwide/workdir)
[INFO] [stdout] warning: trait `VerifyLegalId` is never used
[INFO] [stdout]   --> src/legal_id/mod.rs:73:7
[INFO] [stdout]    |
[INFO] [stdout] 73 | trait VerifyLegalId {
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 4.54s
[INFO] running `Command { std: "docker" "inspect" "bf6f8efe50bc3ba79b4587520df904b5fe9e85a6ebebbc13f5fbc894ffad46f2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "bf6f8efe50bc3ba79b4587520df904b5fe9e85a6ebebbc13f5fbc894ffad46f2", kill_on_drop: false }`
[INFO] [stdout] bf6f8efe50bc3ba79b4587520df904b5fe9e85a6ebebbc13f5fbc894ffad46f2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] a47e250649f7bd49d6aec86dd0eb1249d3a3e4b575f5e8cad34f9feae0100b3d
[INFO] running `Command { std: "docker" "start" "-a" "a47e250649f7bd49d6aec86dd0eb1249d3a3e4b575f5e8cad34f9feae0100b3d", kill_on_drop: false }`
[INFO] [stderr]    Compiling serde_core v1.0.228
[INFO] [stdout] warning: trait `VerifyLegalId` is never used
[INFO] [stdout]   --> src/legal_id/mod.rs:73:7
[INFO] [stdout]    |
[INFO] [stdout] 73 | trait VerifyLegalId {
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]    Compiling serde_json v1.0.149
[INFO] [stderr]    Compiling rust-persian-tools v1.1.4 (/opt/rustwide/workdir)
[INFO] [stdout] warning: trait `VerifyLegalId` is never used
[INFO] [stdout]   --> src/legal_id/mod.rs:73:7
[INFO] [stdout]    |
[INFO] [stdout] 73 | trait VerifyLegalId {
[INFO] [stdout]    |       ^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 7.29s
[INFO] running `Command { std: "docker" "inspect" "a47e250649f7bd49d6aec86dd0eb1249d3a3e4b575f5e8cad34f9feae0100b3d", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "a47e250649f7bd49d6aec86dd0eb1249d3a3e4b575f5e8cad34f9feae0100b3d", kill_on_drop: false }`
[INFO] [stdout] a47e250649f7bd49d6aec86dd0eb1249d3a3e4b575f5e8cad34f9feae0100b3d
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-1-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:845e597a41426bbf2703be69acdb67d10b6de511142d05cba7bbe119c898b2c7" "/opt/rustwide/cargo-home/bin/cargo" "+db823df02fd0c2cf67b43025ac3fef3f2d743245" "test" "--frozen", kill_on_drop: false }`
[INFO] [stdout] 69a0a9f7e7a2db5001da2649af544c423af162c92f0d272d813462140238c425
[INFO] running `Command { std: "docker" "start" "-a" "69a0a9f7e7a2db5001da2649af544c423af162c92f0d272d813462140238c425", kill_on_drop: false }`
[INFO] [stderr] warning: trait `VerifyLegalId` is never used
[INFO] [stderr]   --> src/legal_id/mod.rs:73:7
[INFO] [stderr]    |
[INFO] [stderr] 73 | trait VerifyLegalId {
[INFO] [stderr]    |       ^^^^^^^^^^^^^
[INFO] [stderr]    |
[INFO] [stderr]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stderr] 
[INFO] [stderr] warning: `rust-persian-tools` (lib) generated 1 warning
[INFO] [stderr] warning: `rust-persian-tools` (lib test) generated 1 warning (1 duplicate)
[INFO] [stderr]     Finished `test` profile [unoptimized + debuginfo] target(s) in 0.51s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/rust_persian_tools-e4086eb4d0e51c56)
[INFO] [stdout] 
[INFO] [stdout] running 78 tests
[INFO] [stdout] test add_ordinal_suffix::add_ordinal_suffix_tests::convert ... ok
[INFO] [stdout] test add_ordinal_suffix::add_ordinal_suffix_tests::in_place ... ok
[INFO] [stdout] test arabic_chars::tests::test_name ... ok
[INFO] [stdout] test bill::tests::bill_barcode_regeneration_test ... ok
[INFO] [stdout] test arabic_chars::tests::has_arabic_test ... ok
[INFO] [stdout] test arabic_chars::tests::is_arabic_test ... ok
[INFO] [stdout] test bill::tests::bill_bill_id_is_valid ... ok
[INFO] [stdout] test bill::tests::bill_instantiate_test ... ok
[INFO] [stdout] test bill::tests::bill_generate_barcode_test ... ok
[INFO] [stdout] test bill::tests::bill_bill_type_test ... ok
[INFO] [stdout] test bill::tests::bill_load_from_barcode_parts_test ... ok
[INFO] [stdout] test bill::tests::bill_load_from_barcode_test ... ok
[INFO] [stdout] test bill::tests::bill_load_from_ids_test ... ok
[INFO] [stdout] test bill::tests::bill_payment_id_is_valid ... ok
[INFO] [stdout] test commas::add_commas::tests::add_commas_mut_test ... ok
[INFO] [stdout] test commas::add_commas::tests::add_commas_test ... ok
[INFO] [stdout] test commas::remove_commas::tests::remove_commas_mut_test ... ok
[INFO] [stdout] test commas::remove_commas::tests::remove_commas_test ... ok
[INFO] [stdout] test digits::tests::digits_ar_to_en_test ... ok
[INFO] [stdout] test digits::tests::digits_ar_to_fa_test ... ok
[INFO] [stdout] test digits::tests::digits_en_to_ar_test ... ok
[INFO] [stdout] test digits::tests::digits_en_to_fa_test ... ok
[INFO] [stdout] test digits::tests::digits_fa_to_en_test ... ok
[INFO] [stdout] test digits::tests::digits_fa_to_ar_test ... ok
[INFO] [stdout] test find_capital_by_province::tests::find_capital_by_province_arabic_char ... ok
[INFO] [stdout] test extract_card_number::tests::test_name ... ok
[INFO] [stdout] test find_capital_by_province::tests::find_capital_by_province_normal ... ok
[INFO] [stdout] test find_capital_by_province::tests::find_capital_by_province_none ... ok
[INFO] [stdout] test get_bank_name_by_card_number::tests::test_name ... ok
[INFO] [stdout] test get_place_by_iran_national_id::tests::test_name ... ok
[INFO] [stdout] test get_place_by_iran_national_id::tests::test_name_errors ... ok
[INFO] [stdout] test half_space::tests::test_removing_half_space ... ok
[INFO] [stdout] test half_space::tests::test_adding_half_space ... ok
[INFO] [stdout] test legal_id::tests::verify_iranian_legal_id_test ... ok
[INFO] [stdout] test national_id::verify_iranian_national_id_tests::check_truly ... ok
[INFO] [stdout] test number_plate::tests::should_parse_car_plate ... ok
[INFO] [stdout] test number_plate::tests::should_return_error ... ok
[INFO] [stdout] test number_to_words::tests::number_to_word_errors_test ... ok
[INFO] [stdout] test number_plate::tests::should_return_invalid_for_false_car_character ... ok
[INFO] [stdout] test number_to_words::tests::number_to_word_str_test ... ok
[INFO] [stdout] test number_to_words::three_digits::tests::digits_with_zeros_test ... ok
[INFO] [stdout] test national_id::verify_iranian_national_id_tests::check_falsy ... ok
[INFO] [stdout] test number_plate::tests::should_parse_motorcycle_plate ... ok
[INFO] [stdout] test number_to_words::three_digits::tests::number_with_zeros_test ... ok
[INFO] [stdout] test persian_chars::tests::has_persian_test ... ok
[INFO] [stdout] test number_to_words::tests::number_to_word_test ... ok
[INFO] [stdout] test persian_chars::tests::is_persian_test ... ok
[INFO] [stdout] test phone_number::operators::tests::test_get_phone_details ... ok
[INFO] [stdout] test phone_number::tests::test_operator_prefix ... ok
[INFO] [stdout] test phone_number::tests::test_phone_number_normalizer ... ok
[INFO] [stdout] test remove_ordinal_suffix::remove_ordinal_suffix_tests::remove_mut_test ... ok
[INFO] [stdout] test phone_number::tests::test_phone_number_normalizer_invalid_phone ... ok
[INFO] [stdout] test persian_chars::tests::test_name ... ok
[INFO] [stdout] test phone_number::operators::tests::test_get_phone_prefix_operator ... ok
[INFO] [stdout] test sheba::checksum::tests::sheba_iso7064_mod97_test ... ok
[INFO] [stdout] test phone_number::tests::check_phone_number_valid ... ok
[INFO] [stdout] test remove_ordinal_suffix::remove_ordinal_suffix_tests::remove_test ... ok
[INFO] [stdout] test number_to_words::three_digits::tests::number_to_words_three_digits ... ok
[INFO] [stdout] test sheba::tests::is_sheba_valid_test ... ok
[INFO] [stdout] test sheba::tests::get_sheba_info_test ... ok
[INFO] [stdout] test time_diff::tests::test_check_valid_date_time ... ok
[INFO] [stdout] test time_diff::tests::test_time_diff_as_struct ... ok
[INFO] [stdout] test time_diff::tests::test_time_diff_as_long_form ... ok
[INFO] [stdout] test time_diff::tests::test_time_diff_10_min_ago ... ok
[INFO] [stdout] test time_diff::tests::test_time_diff_between_to_datetime ... ok
[INFO] [stdout] test time_diff::tests::test_time_diff_between_to_datetime_with_long_format_persian_digits ... ok
[INFO] [stdout] test verity_card_number::add_ordinal_suffix_tests::card_number_validation ... ok
[INFO] [stdout] test time_diff::tests::test_time_diff_now ... ok
[INFO] [stdout] test url_fix::tests::url_fix_test ... ok
[INFO] [stdout] test time_diff::tests::test_time_diff_next_2_weeks ... ok
[INFO] [stdout] test verity_card_number::add_ordinal_suffix_tests::card_number_validation_falsy ... ok
[INFO] [stdout] test words_to_number::tests::words_to_number_arabic ... ok
[INFO] [stdout] test time_diff::tests::test_time_diff_next_3_months ... ok
[INFO] [stdout] test words_to_number::tests::words_to_number_with_ordinal_words ... ok
[INFO] [stdout] test words_to_number::tests::words_to_number_test ... ok
[INFO] [stdout] test words_to_number::tests::words_to_number_with_comma_arabic ... ok
[INFO] [stdout] test words_to_number::tests::words_to_number_fail_cases ... ok
[INFO] [stdout] test words_to_number::tests::words_to_number_with_comma_test ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 78 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.01s
[INFO] [stdout] 
[INFO] [stderr]    Doc-tests rust_persian_tools
[INFO] [stdout] 
[INFO] [stdout] running 43 tests
[INFO] [stdout] test src/add_ordinal_suffix/mod.rs - add_ordinal_suffix::add_ordinal_suffix (line 30) ... ok
[INFO] [stdout] test src/bill/mod.rs - bill::BillType (line 94) ... ok
[INFO] [stdout] test src/commas/add_commas.rs - commas::add_commas::add_commas_mut (line 50) ... ok
[INFO] [stdout] test src/commas/add_commas.rs - commas::add_commas::add_commas (line 4) ... ok
[INFO] [stdout] test src/commas/remove_commas.rs - commas::remove_commas::remove_commas (line 4) ... ok
[INFO] [stdout] test src/add_ordinal_suffix/mod.rs - add_ordinal_suffix (line 4) ... ok
[INFO] [stdout] test src/get_bank_name_by_card_number/mod.rs - get_bank_name_by_card_number::get_bank_name_by_card_number (line 11) ... ok
[INFO] [stdout] test src/commas/remove_commas.rs - commas::remove_commas::remove_commas_mut (line 20) ... ok
[INFO] [stdout] test src/digits/mod.rs - digits (line 4) ... ok
[INFO] [stdout] test src/bill/mod.rs - bill (line 28) ... ok
[INFO] [stdout] test src/bill/mod.rs - bill (line 45) ... ok
[INFO] [stdout] test src/find_capital_by_province/mod.rs - find_capital_by_province::find_capital_by_province (line 5) ... ok
[INFO] [stdout] test src/add_ordinal_suffix/mod.rs - add_ordinal_suffix::add_ordinal_suffix_mut (line 52) ... ok
[INFO] [stdout] test src/extract_card_number/mod.rs - extract_card_number::extract_card_number (line 8) ... ok
[INFO] [stdout] test src/get_place_by_iran_national_id/mod.rs - get_place_by_iran_national_id::get_place_by_iran_national_id (line 10) ... ok
[INFO] [stdout] test src/bill/mod.rs - bill (line 11) ... ok
[INFO] [stdout] test src/half_space/mod.rs - half_space::remove_half_space (line 3) ... ok
[INFO] [stdout] test src/legal_id/mod.rs - legal_id::verify_iranian_legal_id (line 11) ... ok
[INFO] [stdout] test src/half_space/mod.rs - half_space::add_half_space (line 42) ... ok
[INFO] [stdout] test src/national_id/mod.rs - national_id (line 4) ... ok
[INFO] [stdout] test src/phone_number/mod.rs - phone_number::is_phone_valid (line 22) ... ok
[INFO] [stdout] test src/number_to_words/mod.rs - number_to_words::number_to_words_str (line 68) ... ok
[INFO] [stdout] test src/phone_number/mod.rs - phone_number::get_operator_prefix (line 110) ... ok
[INFO] [stdout] test src/remove_ordinal_suffix/mod.rs - remove_ordinal_suffix::remove_ordinal_suffix (line 5) ... ok
[INFO] [stdout] test src/number_to_words/mod.rs - number_to_words::number_to_words (line 16) ... ok
[INFO] [stdout] test src/national_id/mod.rs - national_id::verify_iranian_national_id (line 83) ... ok
[INFO] [stdout] test src/phone_number/mod.rs - phone_number::phone_number_normalizer (line 79) ... ok
[INFO] [stdout] test src/phone_number/mod.rs - phone_number::get_phone_prefix (line 52) ... ok
[INFO] [stdout] test src/phone_number/operators.rs - phone_number::operators::get_phone_details (line 534) ... ok
[INFO] [stdout] test src/phone_number/operators.rs - phone_number::operators::get_prefix_details (line 508) ... ok
[INFO] [stdout] test src/remove_ordinal_suffix/mod.rs - remove_ordinal_suffix::remove_ordinal_suffix_mut (line 41) ... ok
[INFO] [stdout] test src/time_diff/mod.rs - time_diff::convert_to_timestamp (line 163) ... ok
[INFO] [stdout] test src/time_diff/mod.rs - time_diff::get_date_time (line 191) ... ok
[INFO] [stdout] test src/verity_card_number/mod.rs - verity_card_number::verify_card_number (line 6) ... ok
[INFO] [stdout] test src/sheba/mod.rs - sheba::is_sheba_valid (line 16) ... ok
[INFO] [stdout] test src/sheba/mod.rs - sheba::get_sheba_info (line 55) ... ok
[INFO] [stdout] test src/url_fix/mod.rs - url_fix::url_fix (line 7) ... ok
[INFO] [stdout] test src/words_to_number/mod.rs - words_to_number::words_to_number_str (line 115) ... ok
[INFO] [stdout] test src/words_to_number/mod.rs - words_to_number::words_to_number (line 77) ... ok
[INFO] [stdout] test src/time_diff/mod.rs - time_diff::time_diff_between (line 326) ... ok
[INFO] [stdout] test src/time_diff/mod.rs - time_diff::time_diff_now (line 259) ... ok
[INFO] [stdout] test src/national_id/mod.rs - national_id (line 44) ... FAILED
[INFO] [stdout] test src/national_id/mod.rs - national_id (line 23) ... FAILED
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout] 
[INFO] [stdout] ---- src/national_id/mod.rs - national_id (line 44) stdout ----
[INFO] [stdout] error[E0432]: unresolved import `rust_persian_tools::national_id::serde`
[INFO] [stdout]   --> src/national_id/mod.rs:46:38
[INFO] [stdout]    |
[INFO] [stdout] 46 | use rust_persian_tools::national_id::serde::national_id_option_de;
[INFO] [stdout]    |                                      ^^^^^ could not find `serde` in `national_id`
[INFO] [stdout]    |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]   --> src/national_id/mod.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | #[cfg(feature = "serde")]
[INFO] [stdout]    |       ----------------- the item is gated behind the `serde` feature
[INFO] [stdout] 64 | pub mod serde;
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `serde`
[INFO] [stdout]   --> src/national_id/mod.rs:48:28
[INFO] [stdout]    |
[INFO] [stdout] 48 | #[derive(Debug, PartialEq, serde::Deserialize)]
[INFO] [stdout]    |                            ^^^^^ use of unresolved module or unlinked crate `serde`
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `serde` in this scope
[INFO] [stdout]   --> src/national_id/mod.rs:50:7
[INFO] [stdout]    |
[INFO] [stdout] 50 |     #[serde(default, deserialize_with = "national_id_option_de")]
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `MyStruct: serde::Deserialize<'de>` is not satisfied
[INFO] [stdout]     --> src/national_id/mod.rs:55:27
[INFO] [stdout]      |
[INFO] [stdout]   55 | let my_struct: MyStruct = serde_json::from_str(json_str).unwrap();
[INFO] [stdout]      |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]      |
[INFO] [stdout] help: the trait `serde_core::de::Deserialize<'_>` is not implemented for `MyStruct`
[INFO] [stdout]     --> src/national_id/mod.rs:49:1
[INFO] [stdout]      |
[INFO] [stdout]   49 | struct MyStruct {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `MyStruct` type
[INFO] [stdout]      = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]      = help: the following other types implement trait `serde_core::de::Deserialize<'de>`:
[INFO] [stdout]                &'a Path
[INFO] [stdout]                &'a [u8]
[INFO] [stdout]                &'a str
[INFO] [stdout]                ()
[INFO] [stdout]                (T,)
[INFO] [stdout]                (T0, T1)
[INFO] [stdout]                (T0, T1, T2)
[INFO] [stdout]                (T0, T1, T2, T3)
[INFO] [stdout]              and 140 others
[INFO] [stdout] note: required by a bound in `serde_json::from_str`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/serde_json-1.0.149/src/de.rs:2701:8
[INFO] [stdout]      |
[INFO] [stdout] 2699 | pub fn from_str<'a, T>(s: &'a str) -> Result<T>
[INFO] [stdout]      |        -------- required by a bound in this function
[INFO] [stdout] 2700 | where
[INFO] [stdout] 2701 |     T: de::Deserialize<'a>,
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^ required by this bound in `from_str`
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `MyStruct: serde::Deserialize<'de>` is not satisfied
[INFO] [stdout]     --> src/national_id/mod.rs:58:27
[INFO] [stdout]      |
[INFO] [stdout]   58 | let my_struct: MyStruct = serde_json::from_str(json_str).unwrap();
[INFO] [stdout]      |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]      |
[INFO] [stdout] help: the trait `serde_core::de::Deserialize<'_>` is not implemented for `MyStruct`
[INFO] [stdout]     --> src/national_id/mod.rs:49:1
[INFO] [stdout]      |
[INFO] [stdout]   49 | struct MyStruct {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `MyStruct` type
[INFO] [stdout]      = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]      = help: the following other types implement trait `serde_core::de::Deserialize<'de>`:
[INFO] [stdout]                &'a Path
[INFO] [stdout]                &'a [u8]
[INFO] [stdout]                &'a str
[INFO] [stdout]                ()
[INFO] [stdout]                (T,)
[INFO] [stdout]                (T0, T1)
[INFO] [stdout]                (T0, T1, T2)
[INFO] [stdout]                (T0, T1, T2, T3)
[INFO] [stdout]              and 140 others
[INFO] [stdout] note: required by a bound in `serde_json::from_str`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/serde_json-1.0.149/src/de.rs:2701:8
[INFO] [stdout]      |
[INFO] [stdout] 2699 | pub fn from_str<'a, T>(s: &'a str) -> Result<T>
[INFO] [stdout]      |        -------- required by a bound in this function
[INFO] [stdout] 2700 | where
[INFO] [stdout] 2701 |     T: de::Deserialize<'a>,
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^ required by this bound in `from_str`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 5 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432, E0433.
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] ---- src/national_id/mod.rs - national_id (line 23) stdout ----
[INFO] [stdout] error[E0432]: unresolved import `rust_persian_tools::national_id::serde`
[INFO] [stdout]   --> src/national_id/mod.rs:25:38
[INFO] [stdout]    |
[INFO] [stdout] 25 | use rust_persian_tools::national_id::serde::national_id_de;
[INFO] [stdout]    |                                      ^^^^^ could not find `serde` in `national_id`
[INFO] [stdout]    |
[INFO] [stdout] note: found an item that was configured out
[INFO] [stdout]   --> src/national_id/mod.rs:64:9
[INFO] [stdout]    |
[INFO] [stdout] 63 | #[cfg(feature = "serde")]
[INFO] [stdout]    |       ----------------- the item is gated behind the `serde` feature
[INFO] [stdout] 64 | pub mod serde;
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: failed to resolve: use of unresolved module or unlinked crate `serde`
[INFO] [stdout]   --> src/national_id/mod.rs:27:28
[INFO] [stdout]    |
[INFO] [stdout] 27 | #[derive(Debug, PartialEq, serde::Deserialize)]
[INFO] [stdout]    |                            ^^^^^ use of unresolved module or unlinked crate `serde`
[INFO] [stdout] 
[INFO] [stdout] error: cannot find attribute `serde` in this scope
[INFO] [stdout]   --> src/national_id/mod.rs:29:7
[INFO] [stdout]    |
[INFO] [stdout] 29 |     #[serde(deserialize_with = "national_id_de")]
[INFO] [stdout]    |       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `MyStruct: serde::Deserialize<'de>` is not satisfied
[INFO] [stdout]     --> src/national_id/mod.rs:34:27
[INFO] [stdout]      |
[INFO] [stdout]   34 | let my_struct: MyStruct = serde_json::from_str(json_str).unwrap();
[INFO] [stdout]      |                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]      |
[INFO] [stdout] help: the trait `serde_core::de::Deserialize<'_>` is not implemented for `MyStruct`
[INFO] [stdout]     --> src/national_id/mod.rs:28:1
[INFO] [stdout]      |
[INFO] [stdout]   28 | struct MyStruct {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `MyStruct` type
[INFO] [stdout]      = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]      = help: the following other types implement trait `serde_core::de::Deserialize<'de>`:
[INFO] [stdout]                &'a Path
[INFO] [stdout]                &'a [u8]
[INFO] [stdout]                &'a str
[INFO] [stdout]                ()
[INFO] [stdout]                (T,)
[INFO] [stdout]                (T0, T1)
[INFO] [stdout]                (T0, T1, T2)
[INFO] [stdout]                (T0, T1, T2, T3)
[INFO] [stdout]              and 140 others
[INFO] [stdout] note: required by a bound in `serde_json::from_str`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/serde_json-1.0.149/src/de.rs:2701:8
[INFO] [stdout]      |
[INFO] [stdout] 2699 | pub fn from_str<'a, T>(s: &'a str) -> Result<T>
[INFO] [stdout]      |        -------- required by a bound in this function
[INFO] [stdout] 2700 | where
[INFO] [stdout] 2701 |     T: de::Deserialize<'a>,
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^ required by this bound in `from_str`
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `MyStruct: serde::Deserialize<'de>` is not satisfied
[INFO] [stdout]     --> src/national_id/mod.rs:38:32
[INFO] [stdout]      |
[INFO] [stdout]   38 | assert!(serde_json::from_str::<MyStruct>(json_str_invalid).is_err());
[INFO] [stdout]      |                                ^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]      |
[INFO] [stdout] help: the trait `serde_core::de::Deserialize<'_>` is not implemented for `MyStruct`
[INFO] [stdout]     --> src/national_id/mod.rs:28:1
[INFO] [stdout]      |
[INFO] [stdout]   28 | struct MyStruct {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `MyStruct` type
[INFO] [stdout]      = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]      = help: the following other types implement trait `serde_core::de::Deserialize<'de>`:
[INFO] [stdout]                &'a Path
[INFO] [stdout]                &'a [u8]
[INFO] [stdout]                &'a str
[INFO] [stdout]                ()
[INFO] [stdout]                (T,)
[INFO] [stdout]                (T0, T1)
[INFO] [stdout]                (T0, T1, T2)
[INFO] [stdout]                (T0, T1, T2, T3)
[INFO] [stdout]              and 140 others
[INFO] [stdout] note: required by a bound in `serde_json::from_str`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/serde_json-1.0.149/src/de.rs:2701:8
[INFO] [stdout]      |
[INFO] [stdout] 2699 | pub fn from_str<'a, T>(s: &'a str) -> Result<T>
[INFO] [stdout]      |        -------- required by a bound in this function
[INFO] [stdout] 2700 | where
[INFO] [stdout] 2701 |     T: de::Deserialize<'a>,
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^ required by this bound in `from_str`
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the trait bound `MyStruct: serde::Deserialize<'de>` is not satisfied
[INFO] [stdout]     --> src/national_id/mod.rs:40:28
[INFO] [stdout]      |
[INFO] [stdout]   40 |     serde_json::from_str::<MyStruct>(json_str_invalid).err().unwrap().to_string(),
[INFO] [stdout]      |                            ^^^^^^^^ unsatisfied trait bound
[INFO] [stdout]      |
[INFO] [stdout] help: the trait `serde_core::de::Deserialize<'_>` is not implemented for `MyStruct`
[INFO] [stdout]     --> src/national_id/mod.rs:28:1
[INFO] [stdout]      |
[INFO] [stdout]   28 | struct MyStruct {
[INFO] [stdout]      | ^^^^^^^^^^^^^^^
[INFO] [stdout]      = note: for local types consider adding `#[derive(serde::Deserialize)]` to your `MyStruct` type
[INFO] [stdout]      = note: for types from other crates check whether the crate offers a `serde` feature flag
[INFO] [stdout]      = help: the following other types implement trait `serde_core::de::Deserialize<'de>`:
[INFO] [stdout]                &'a Path
[INFO] [stdout]                &'a [u8]
[INFO] [stdout]                &'a str
[INFO] [stdout]                ()
[INFO] [stdout]                (T,)
[INFO] [stdout]                (T0, T1)
[INFO] [stdout]                (T0, T1, T2)
[INFO] [stdout]                (T0, T1, T2, T3)
[INFO] [stdout]              and 140 others
[INFO] [stdout] note: required by a bound in `serde_json::from_str`
[INFO] [stdout]     --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/serde_json-1.0.149/src/de.rs:2701:8
[INFO] [stdout]      |
[INFO] [stdout] 2699 | pub fn from_str<'a, T>(s: &'a str) -> Result<T>
[INFO] [stdout]      |        -------- required by a bound in this function
[INFO] [stdout] 2700 | where
[INFO] [stdout] 2701 |     T: de::Deserialize<'a>,
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^ required by this bound in `from_str`
[INFO] [stdout] 
[INFO] [stdout] error: aborting due to 6 previous errors
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432, E0433.
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] Couldn't compile the test.
[INFO] [stdout] 
[INFO] [stdout] failures:
[INFO] [stdout]     src/national_id/mod.rs - national_id (line 23)
[INFO] [stdout]     src/national_id/mod.rs - national_id (line 44)
[INFO] [stdout] 
[INFO] [stdout] test result: FAILED. 41 passed; 2 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.48s
[INFO] [stdout] 
[INFO] [stderr] error: doctest failed, to rerun pass `--doc`
[INFO] running `Command { std: "docker" "inspect" "69a0a9f7e7a2db5001da2649af544c423af162c92f0d272d813462140238c425", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "69a0a9f7e7a2db5001da2649af544c423af162c92f0d272d813462140238c425", kill_on_drop: false }`
[INFO] [stdout] 69a0a9f7e7a2db5001da2649af544c423af162c92f0d272d813462140238c425
