use std::hash::Hash; use serde::{Deserialize, Serialize}; use super::{ pcd_item_enc_attribute_private::PcdItemEncAttributePrivate, pcd_item_enc_attribute_public::PcdItemEncAttributePublic, pcd_item_enc_attribute_role_confidential::PcdItemEncAttributeRoleConfidential, }; #[derive(Debug, Serialize, Deserialize, Default, Clone, PartialEq, Eq, Hash, PartialOrd, Ord)] pub struct PcdItemEnc { pub version: i64, pub item_type: String, pub name: String, pub pagination_number_per_pcd: u32, pub pcd_item_enc_attribute_public_list: Vec, pub pcd_item_enc_attribute_role_confidential_list: Vec, pub pcd_item_enc_attribute_private_list: Vec, } impl PcdItemEnc { pub fn new( version: i64, item_type: String, name: String, pagination_number_per_pcd: u32, pcd_item_enc_attribute_public_list: Vec, pcd_item_enc_attribute_role_confidential_list: Vec, pcd_item_enc_attribute_private_list: Vec, ) -> Self { PcdItemEnc { version, item_type, name, pagination_number_per_pcd, pcd_item_enc_attribute_public_list, pcd_item_enc_attribute_role_confidential_list, pcd_item_enc_attribute_private_list, } } pub fn display_info(&self) { println!("PcdItemEnc:"); println!("Public Attributes:"); for attr in &self.pcd_item_enc_attribute_public_list { attr.display_info(); } println!("Role Confidential Attributes:"); for attr in &self.pcd_item_enc_attribute_role_confidential_list { attr.display_info(); } println!("Private Attributes:"); for attr in &self.pcd_item_enc_attribute_private_list { attr.display_info(); } } // Additional methods for PcdItemEnc can be added here }