pub enum MnemonicLanguage {
English = 0,
SimplifiedChinese = 1,
TraditionalChinese = 2,
Czech = 3,
French = 4,
Italian = 5,
Japanese = 6,
Korean = 7,
Portuguese = 8,
Spanish = 9,
}
Expand description
The language used for BIP-39/BIP-44 mnemonic seed phrases in a wallet.
MnemonicLanguage
represents the human language in which a wallet’s recovery
seed phrase is expressed. Zcash wallets, like many cryptocurrency wallets, use
mnemonic phrases (typically 12, 18, or 24 words) as a human-readable backup
for the wallet’s seed material.
§Zcash Concept Relation
Zcash wallets commonly use BIP-39 mnemonics as the basis for hierarchical deterministic (HD) wallet generation. The language of the mnemonic matters because:
- Each language has its own standardized wordlist with 2048 specific words
- Words must be from the same language to be valid for a given mnemonic
- The language determines which wordlist is used for validation and generation
Zcash wallets typically follow the same standards as Bitcoin for mnemonic implementation, supporting multiple languages for wider accessibility.
§Data Preservation
During wallet migration, preserving the mnemonic language is important for:
- Correctly interpreting any stored mnemonic phrases
- Maintaining consistent wallet recovery procedures
- Ensuring users can recover funds using their preferred language
§Examples
// Create a language identifier from a numeric value
let language = MnemonicLanguage::from_u32(0)?;
assert_eq!(language, MnemonicLanguage::English);
// Get the language name
assert_eq!(language.name(), "English");
// Languages can be displayed as strings
println!("Mnemonic language: {}", language); // Outputs "Mnemonic language: English"
Variants§
English = 0
English wordlist (the most commonly used)
SimplifiedChinese = 1
Simplified Chinese wordlist
TraditionalChinese = 2
Traditional Chinese wordlist
Czech = 3
Czech wordlist
French = 4
French wordlist
Italian = 5
Italian wordlist
Japanese = 6
Japanese wordlist
Korean = 7
Korean wordlist
Portuguese = 8
Portuguese wordlist
Spanish = 9
Spanish wordlist
Implementations§
Source§impl MnemonicLanguage
impl MnemonicLanguage
Sourcepub fn from_u32(value: u32) -> Result<Self>
pub fn from_u32(value: u32) -> Result<Self>
Creates a MnemonicLanguage
from a numeric identifier.
This method converts a raw numeric value into the corresponding language enum variant. Zcash wallets typically store the language as a numeric value in their configuration or database.
§Arguments
value
- The numeric identifier for the language (0-9)
§Returns
A Result
containing the MnemonicLanguage
if the value is valid,
or an error if the value doesn’t correspond to a supported language.
§Examples
// Create English (most common) language
let english = MnemonicLanguage::from_u32(0)?;
// Create French language
let french = MnemonicLanguage::from_u32(4)?;
// Invalid value results in error
let result = MnemonicLanguage::from_u32(99);
assert!(result.is_err());
Sourcepub fn name(&self) -> &'static str
pub fn name(&self) -> &'static str
Returns the string name of the mnemonic language.
This method returns the canonical name of the language as a static string, which is useful for display purposes or when translating between numeric and human-readable representations.
§Returns
A static string containing the name of the language.
§Examples
let language = MnemonicLanguage::English;
assert_eq!(language.name(), "English");
let language = MnemonicLanguage::Japanese;
assert_eq!(language.name(), "Japanese");
Trait Implementations§
Source§impl Clone for MnemonicLanguage
impl Clone for MnemonicLanguage
Source§fn clone(&self) -> MnemonicLanguage
fn clone(&self) -> MnemonicLanguage
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for MnemonicLanguage
Formats the mnemonic language for debugging output
impl Debug for MnemonicLanguage
Formats the mnemonic language for debugging output
Source§impl Display for MnemonicLanguage
Formats the mnemonic language as a human-readable string
impl Display for MnemonicLanguage
Formats the mnemonic language as a human-readable string
Source§impl From<MnemonicLanguage> for CBOR
impl From<MnemonicLanguage> for CBOR
Source§fn from(value: MnemonicLanguage) -> Self
fn from(value: MnemonicLanguage) -> Self
Source§impl From<MnemonicLanguage> for Envelope
impl From<MnemonicLanguage> for Envelope
Source§fn from(value: MnemonicLanguage) -> Self
fn from(value: MnemonicLanguage) -> Self
Source§impl From<MnemonicLanguage> for String
impl From<MnemonicLanguage> for String
Source§fn from(value: MnemonicLanguage) -> Self
fn from(value: MnemonicLanguage) -> Self
Source§impl PartialEq for MnemonicLanguage
impl PartialEq for MnemonicLanguage
Source§impl TryFrom<CBOR> for MnemonicLanguage
impl TryFrom<CBOR> for MnemonicLanguage
Source§impl TryFrom<Envelope> for MnemonicLanguage
impl TryFrom<Envelope> for MnemonicLanguage
Source§impl TryFrom<String> for MnemonicLanguage
impl TryFrom<String> for MnemonicLanguage
impl Copy for MnemonicLanguage
impl StructuralPartialEq for MnemonicLanguage
Auto Trait Implementations§
impl Freeze for MnemonicLanguage
impl RefUnwindSafe for MnemonicLanguage
impl Send for MnemonicLanguage
impl Sync for MnemonicLanguage
impl Unpin for MnemonicLanguage
impl UnwindSafe for MnemonicLanguage
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CBORDecodable for T
impl<T> CBORDecodable for T
Source§impl<T> CBOREncodable for T
impl<T> CBOREncodable for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> EnvelopeEncodable for T
impl<T> EnvelopeEncodable for T
Source§fn into_envelope(self) -> Envelope
fn into_envelope(self) -> Envelope
Converts the value into an envelope by using its Into<Envelope>
implementation.
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more