Struct AccountId
pub struct AccountId(/* private fields */);Expand description
NEAR Account Identifier.
This is a unique, syntactically valid, human-readable account identifier on the NEAR network.
See the crate-level docs for information about validation.
Also see Error kind precedence.
§Examples
use near_account_id::AccountId;
let alice: AccountId = "alice.near".parse().unwrap();
assert!("ƒelicia.near".parse::<AccountId>().is_err()); // (ƒ is not f)Implementations§
§impl AccountId
impl AccountId
pub fn validate(account_id: &str) -> Result<(), ParseAccountError>
pub fn validate(account_id: &str) -> Result<(), ParseAccountError>
Validates a string as a well-structured NEAR Account ID.
Checks Account ID validity without constructing an AccountId instance.
§Examples
use near_account_id::{AccountId, ParseErrorKind};
assert!(AccountId::validate("alice.near").is_ok());
assert!(
matches!(
AccountId::validate("ƒelicia.near"), // fancy ƒ!
Err(err) if err.kind() == &ParseErrorKind::InvalidChar
)
);§Error kind precedence
If an Account ID has multiple format violations, the first one would be reported.
§Examples
use near_account_id::{AccountId, ParseErrorKind};
assert!(
matches!(
AccountId::validate("A__ƒƒluent."),
Err(err) if err.kind() == &ParseErrorKind::InvalidChar
)
);
assert!(
matches!(
AccountId::validate("a__ƒƒluent."),
Err(err) if err.kind() == &ParseErrorKind::RedundantSeparator
)
);
assert!(
matches!(
AccountId::validate("aƒƒluent."),
Err(err) if err.kind() == &ParseErrorKind::InvalidChar
)
);
assert!(
matches!(
AccountId::validate("affluent."),
Err(err) if err.kind() == &ParseErrorKind::RedundantSeparator
)
);Methods from Deref<Target = AccountIdRef>§
pub const MIN_LEN: usize = crate::validation::MIN_LEN
pub const MAX_LEN: usize = crate::validation::MAX_LEN
pub fn as_str(&self) -> &str
pub fn as_str(&self) -> &str
Returns a string slice of the entire Account ID.
§Examples
use near_account_id::AccountIdRef;
let carol = AccountIdRef::new("carol.near").unwrap();
assert_eq!("carol.near", carol.as_str());pub fn is_top_level(&self) -> bool
pub fn is_top_level(&self) -> bool
Returns true if the account ID is a top-level NEAR Account ID.
See Top-level Accounts.
§Examples
use near_account_id::AccountIdRef;
let near_tla = AccountIdRef::new("near").unwrap();
assert!(near_tla.is_top_level());
// "alice.near" is a sub account of "near" account
let alice = AccountIdRef::new("alice.near").unwrap();
assert!(!alice.is_top_level());pub fn sub_account(
&self,
name: impl AsRef<str>,
) -> Result<AccountId, ParseAccountError>
pub fn sub_account( &self, name: impl AsRef<str>, ) -> Result<AccountId, ParseAccountError>
Returns sub account of current account: {name}.{parent}.
Returns Err if the resulting sub account is invalid (e.g. too long).
§Examples
use near_account_id::AccountIdRef;
let parent = AccountIdRef::new("near").unwrap();
let child = parent.sub_account("alice").unwrap();
assert!(child.is_sub_account_of(parent));pub fn parent(&self) -> Option<&AccountIdRef>
pub fn parent(&self) -> Option<&AccountIdRef>
Returns parent account if current account is a subaccount.
§Examples
use near_account_id::AccountIdRef;
let tla = AccountIdRef::new("near").unwrap();
assert_eq!(tla.parent(), None);
let child = AccountIdRef::new("alice.near").unwrap();
let parent = child.parent().unwrap();
assert_eq!(parent, "near");
assert!(child.is_sub_account_of(parent));pub fn is_sub_account_of(&self, parent: impl AsRef<AccountIdRef>) -> bool
pub fn is_sub_account_of(&self, parent: impl AsRef<AccountIdRef>) -> bool
Returns true if the AccountId is a direct sub-account of the provided parent account.
See Subaccounts.
§Examples
use near_account_id::AccountId;
let near_tla: AccountId = "near".parse().unwrap();
assert!(near_tla.is_top_level());
let alice: AccountId = "alice.near".parse().unwrap();
assert!(alice.is_sub_account_of(&near_tla));
let alice_app: AccountId = "app.alice.near".parse().unwrap();
// While app.alice.near is a sub account of alice.near,
// app.alice.near is not a sub account of near
assert!(alice_app.is_sub_account_of(&alice));
assert!(!alice_app.is_sub_account_of(&near_tla));pub fn get_account_type(&self) -> AccountType
pub fn get_account_type(&self) -> AccountType
Returns AccountType::EthImplicitAccount if the AccountId is a 40 characters long hexadecimal prefixed with ‘0x’.
Returns AccountType::NearImplicitAccount if the AccountId is a 64 characters long hexadecimal.
Otherwise, returns AccountType::NamedAccount.
See Implicit-Accounts.
§Examples
use near_account_id::{AccountId, AccountType};
let alice: AccountId = "alice.near".parse().unwrap();
assert!(alice.get_account_type() == AccountType::NamedAccount);
let eth_rando = "0xb794f5ea0ba39494ce839613fffba74279579268"
.parse::<AccountId>()
.unwrap();
assert!(eth_rando.get_account_type() == AccountType::EthImplicitAccount);
let near_rando = "98793cd91a3f870fb126f66285808c7e094afcfc4eda8a970f6648cdf0dbd6de"
.parse::<AccountId>()
.unwrap();
assert!(near_rando.get_account_type() == AccountType::NearImplicitAccount);pub fn is_system(&self) -> bool
pub fn is_system(&self) -> bool
Returns true if this AccountId is the system account.
See System account.
§Examples
use near_account_id::AccountId;
let alice: AccountId = "alice.near".parse().unwrap();
assert!(!alice.is_system());
let system: AccountId = "system".parse().unwrap();
assert!(system.is_system());pub fn get_parent_account_id(&self) -> Option<&AccountIdRef>
pub fn get_parent_account_id(&self) -> Option<&AccountIdRef>
Returns parent’s account id reference
§Examples
use near_account_id::AccountIdRef;
let alice: &AccountIdRef = AccountIdRef::new_or_panic("alice.near");
let parent: &AccountIdRef = alice.get_parent_account_id().unwrap();
assert!(alice.is_sub_account_of(parent));
let near: &AccountIdRef = AccountIdRef::new_or_panic("near");
assert!(near.get_parent_account_id().is_none());
let implicit: &AccountIdRef = AccountIdRef::new_or_panic("248e104d1d4764d713c4211c13808c8fc887869c580f4178e60538ac5c2a0b26");
assert!(implicit.get_parent_account_id().is_none());Trait Implementations§
§impl AccountIdExt for AccountId
impl AccountIdExt for AccountId
§fn is_implicit(&self) -> bool
fn is_implicit(&self) -> bool
§fn is_evm_implicit(&self) -> bool
fn is_evm_implicit(&self) -> bool
§impl Arbitrary<'_> for AccountId
impl Arbitrary<'_> for AccountId
§fn arbitrary(u: &mut Unstructured<'_>) -> Result<AccountId, Error>
fn arbitrary(u: &mut Unstructured<'_>) -> Result<AccountId, Error>
Self from the given unstructured data. Read more§fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self, Error>
fn arbitrary_take_rest(u: Unstructured<'a>) -> Result<Self, Error>
Self from the entirety of the given
unstructured data. Read more§impl AsRef<AccountIdRef> for AccountId
impl AsRef<AccountIdRef> for AccountId
§fn as_ref(&self) -> &AccountIdRef
fn as_ref(&self) -> &AccountIdRef
§impl Borrow<AccountIdRef> for AccountId
impl Borrow<AccountIdRef> for AccountId
§fn borrow(&self) -> &AccountIdRef
fn borrow(&self) -> &AccountIdRef
§impl BorshDeserialize for AccountId
impl BorshDeserialize for AccountId
fn deserialize_reader<R>(rd: &mut R) -> Result<AccountId, Error>where
R: Read,
§fn deserialize(buf: &mut &[u8]) -> Result<Self, Error>
fn deserialize(buf: &mut &[u8]) -> Result<Self, Error>
§fn try_from_slice(v: &[u8]) -> Result<Self, Error>
fn try_from_slice(v: &[u8]) -> Result<Self, Error>
fn try_from_reader<R>(reader: &mut R) -> Result<Self, Error>where
R: Read,
§impl BorshSchema for AccountId
impl BorshSchema for AccountId
§fn declaration() -> String
fn declaration() -> String
§fn add_definitions_recursively(definitions: &mut BTreeMap<String, Definition>)
fn add_definitions_recursively(definitions: &mut BTreeMap<String, Definition>)
§impl<'de> Deserialize<'de> for AccountId
impl<'de> Deserialize<'de> for AccountId
§fn deserialize<D>(
deserializer: D,
) -> Result<AccountId, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
fn deserialize<D>(
deserializer: D,
) -> Result<AccountId, <D as Deserializer<'de>>::Error>where
D: Deserializer<'de>,
§impl<'a> From<&'a AccountIdRef> for AccountId
impl<'a> From<&'a AccountIdRef> for AccountId
§fn from(id: &'a AccountIdRef) -> AccountId
fn from(id: &'a AccountIdRef) -> AccountId
§impl From<AccountId> for GlobalContractId
impl From<AccountId> for GlobalContractId
§fn from(account_id: AccountId) -> GlobalContractId
fn from(account_id: AccountId) -> GlobalContractId
§impl<'a> From<Cow<'a, AccountIdRef>> for AccountId
impl<'a> From<Cow<'a, AccountIdRef>> for AccountId
§fn from(value: Cow<'a, AccountIdRef>) -> AccountId
fn from(value: Cow<'a, AccountIdRef>) -> AccountId
§impl IntoContractId for &AccountId
impl IntoContractId for &AccountId
§fn into_contract_id(self, _chain_id: &ChainId) -> Result<AccountId, Error>
fn into_contract_id(self, _chain_id: &ChainId) -> Result<AccountId, Error>
AccountId for the given chain.§impl IntoContractId for AccountId
impl IntoContractId for AccountId
§fn into_contract_id(self, _chain_id: &ChainId) -> Result<AccountId, Error>
fn into_contract_id(self, _chain_id: &ChainId) -> Result<AccountId, Error>
AccountId for the given chain.§impl IntoGlobalContractId for &AccountId
impl IntoGlobalContractId for &AccountId
fn into_identifier(self) -> GlobalContractId
§impl IntoGlobalContractId for AccountId
impl IntoGlobalContractId for AccountId
fn into_identifier(self) -> GlobalContractId
§impl JsonSchema for AccountId
Available on crate feature schemars-v0_8 only.
impl JsonSchema for AccountId
schemars-v0_8 only.§fn is_referenceable() -> bool
fn is_referenceable() -> bool
$ref keyword. Read more§fn schema_name() -> String
fn schema_name() -> String
§fn json_schema(_: &mut SchemaGenerator) -> Schema
fn json_schema(_: &mut SchemaGenerator) -> Schema
§impl Ord for AccountId
impl Ord for AccountId
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
§impl<'a> PartialEq<&'a AccountIdRef> for AccountId
impl<'a> PartialEq<&'a AccountIdRef> for AccountId
§fn eq(&self, other: &&'a AccountIdRef) -> bool
fn eq(&self, other: &&'a AccountIdRef) -> bool
self and other values to be equal, and is used by ==.§impl<'a> PartialEq<AccountId> for &'a AccountIdRef
impl<'a> PartialEq<AccountId> for &'a AccountIdRef
§impl PartialEq<AccountId> for AccountIdRef
impl PartialEq<AccountId> for AccountIdRef
§impl PartialEq<AccountIdRef> for AccountId
impl PartialEq<AccountIdRef> for AccountId
§impl<'a> PartialOrd<&'a AccountIdRef> for AccountId
impl<'a> PartialOrd<&'a AccountIdRef> for AccountId
§impl<'a> PartialOrd<&'a str> for AccountId
impl<'a> PartialOrd<&'a str> for AccountId
§impl<'a> PartialOrd<AccountId> for &'a AccountIdRef
impl<'a> PartialOrd<AccountId> for &'a AccountIdRef
§impl<'a> PartialOrd<AccountId> for &'a str
impl<'a> PartialOrd<AccountId> for &'a str
§impl PartialOrd<AccountId> for AccountIdRef
impl PartialOrd<AccountId> for AccountIdRef
§impl PartialOrd<AccountId> for str
impl PartialOrd<AccountId> for str
§impl PartialOrd<AccountIdRef> for AccountId
impl PartialOrd<AccountIdRef> for AccountId
§impl PartialOrd<String> for AccountId
impl PartialOrd<String> for AccountId
§impl PartialOrd<str> for AccountId
impl PartialOrd<str> for AccountId
§impl PartialOrd for AccountId
impl PartialOrd for AccountId
§impl Serialize for AccountId
impl Serialize for AccountId
§fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
fn serialize<S>(
&self,
serializer: S,
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
impl Eq for AccountId
impl StructuralPartialEq for AccountId
Auto Trait Implementations§
impl Freeze for AccountId
impl RefUnwindSafe for AccountId
impl Send for AccountId
impl Sync for AccountId
impl Unpin for AccountId
impl UnsafeUnpin for AccountId
impl UnwindSafe for AccountId
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read more§impl<T> BitPackWrapAsExt for T
impl<T> BitPackWrapAsExt for T
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
§impl<T> CellSerializeWrapAsExt for T
impl<T> CellSerializeWrapAsExt for T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<T> Conv for T
impl<T> Conv for T
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request§impl<T> IntoResult<T> for T
impl<T> IntoResult<T> for T
type Err = Infallible
fn into_result(self) -> Result<T, <T as IntoResult<T>>::Err>
§impl<L> LayerExt<L> for L
impl<L> LayerExt<L> for L
§fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>where
L: Layer<S>,
Layered].§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.