mod.rs
1 // Copyright (c) 2019-2025 Alpha-Delta Network Inc. 2 // This file is part of the alphavm library. 3 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at: 7 8 // http://www.apache.org/licenses/LICENSE-2.0 9 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 16 mod bytes; 17 mod parse; 18 mod serialize; 19 20 use crate::{Identifier, U32}; 21 use alphavm_console_network::prelude::*; 22 23 /// A helper type for accessing an entry in a register, struct, array, or record. 24 #[derive(Copy, Clone, PartialEq, Eq, Hash)] 25 pub enum Access<N: Network> { 26 /// Access a member of a register, struct, or record. 27 Member(Identifier<N>), 28 /// Access an element of an array. 29 Index(U32<N>), 30 } 31 32 impl<N: Network> From<Identifier<N>> for Access<N> { 33 /// Initializes a new member access from an identifier. 34 #[inline] 35 fn from(identifier: Identifier<N>) -> Self { 36 Self::Member(identifier) 37 } 38 } 39 40 impl<N: Network> From<U32<N>> for Access<N> { 41 /// Initializes a new index access from a u32. 42 #[inline] 43 fn from(index: U32<N>) -> Self { 44 Self::Index(index) 45 } 46 }