Soalan dan jawapan

Bagaimanakah saya boleh nyahserialisasi akaun dalam fronted Rust?

Saiz teks
Isu dengan #[max_len(32)] yang hilang ialah akaun bersiri mengandungi string yang dipadatkan dengan 0 bait untuk menjadikannya 32 bait, manakala struct penyahserialan cuba menyahserialkan hanya sepanjang string anda sebenarnya dan kemudian baki 0 bait mengganggu penyahserialan medan berikutnya. Untuk membaikinya, saya syorkan menggunakan declare_program! daripada anchor_client. Dengan itu anda tidak perlu melaksanakan struct yang sama secara manual dalam program dan klien anda dan anda mendapat penyahserialan yang dilaksanakan secara percuma untuk anda. Salin tampal daripada soalan ini: declare_program!(my_program); use my_program::{ID, accounts::Proposal}; use anchor_client::Client; let cl = Client::new_with_options( cluster, fee_payer, CommitmentConfig::confirmed(), ); let p = cl.program(ID).unwrap(); let acc_state: Proposal = p.account().await?; Jika anda tidak boleh melakukan ini, saya syorkan menggunakan BorshDeserialize::deserialize kerana seperti yang saya katakan masalah anda ialah mempunyai terlalu banyak bait. Proposal::deserialize(&mut &data[..]).unwrap(); Perhatikan bahawa ini akan mengubah tatasusunan bait asas anda untuk menunjuk kepada baki bait. Saya rasa ini tidak mengapa kerana anda mungkin tidak akan menggunakan bait yang sama untuk apa-apa lagi, tetapi sekadar makluman.
Terus menerokaKatalog dataCari