All Projects → ThomasdenH → iban_validate

ThomasdenH / iban_validate

Licence: Apache-2.0, MIT licenses found Licenses found Apache-2.0 LICENSE-APACHE MIT LICENSE_MIT
A Rust crate to verify IBAN account numbers.

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to iban validate

ibandit
Convert national banking details into IBANs, and vice-versa.
Stars: ✭ 90 (+500%)
Mutual labels:  iban
bankster
An IBAN account numbers and BIC validation tool for Elixir.
Stars: ✭ 28 (+86.67%)
Mutual labels:  iban
vue-persian-tools
Persian tools wrapper for vue.js
Stars: ✭ 21 (+40%)
Mutual labels:  iban
Narvalo.NET
Applied functional patterns for C#. Money and Currency types. MVP framework. (Obsolete)
Stars: ✭ 16 (+6.67%)
Mutual labels:  iban
iran-sheba
Validate and Recognize IBAN in Iran
Stars: ✭ 23 (+53.33%)
Mutual labels:  iban

iban_validate

Crates.io test Generation code fmt & clippy

This crate provides an easy way to validate an IBAN (International Bank Account Number). To do so, you can use the function parse(). This will check the IBAN rules as well as the BBAN structure. The provided Iban structure provides many methods to easy the handling of an IBAN. Many of these methods are provided via the IbanLike trait.

When BBAN parsing fails, the error type ParseIbanError provides useful information about what went wrong. Additionally, the error contains BaseIban, which can still be used to access useful information.

Example

The following example does a full validation of the IBAN and BBAN format.

use iban::*;

fn main() -> Result<(), ParseIbanError> {
  let account = "DE44500105175407324931".parse::<Iban>()?;
  assert_eq!(account.country_code(), "DE");
  assert_eq!(account.check_digits(), 44);
  assert_eq!(account.bban(), "500105175407324931");
  assert_eq!(account.electronic_str(), "DE44500105175407324931");
  assert_eq!(account.to_string(), "DE44 5001 0517 5407 3249 31");
  assert_eq!(account.bank_identifier(), Some("50010517"));
  assert_eq!(account.branch_identifier(), None);
  Ok(())
}

What does this library provide?

  • A Iban type that can be used to parse account numbers very quickly. It doesn't require allocations at all, and instead leverages arrayvec under the hood.
  • A flexible API that is useful even when the country is not in the Swift registry (using BaseIban. Instead of using panic, the crate provides typed errors with what went wrong.
  • All functionality can be used in a no_std environment (except for the implementation of std traits).
  • Optional serialization and deserialization via serde.
  • CI tested results via the Swift provided and custom test cases, as well as proptest.
  • #![forbid(unsafe_code)], making sure all code is written in safe Rust.

Usage

The crate can be found on crates.io. To use this crate, just add it as an dependency:

[dependencies]
iban_validate = "4"

Features

The following features can be used to configure the crate:

  • std: Enabled by default. Enable the standard library. It is only used to provide implementations of Error.
  • serde: Enable serde support for Iban and BaseIban.

Contributing

If you experience issues with this crate or want to help, please look here.

Stability

This crate is usable on the latest stable release of the Rust compiler and otherwise makes no stability guarantees.

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].