የጽሑፍ መጠን
የጠፋው #[max_len(32)] ችግር የተከሰተው የተለወጠው መለያ በ0 ባይት ተሞልቶ 32 ባይት የሆነ ሕብረቁምፊ ስለሚይዝ ነው፣ ነገር ግን መልሶ የሚቀይረው አሰራር ሕብረቁምፊዎ በትክክል ያለውን ያህል ባይት ብቻ ለመቀየር ስለሚሞክር ቀሪዎቹ 0 ባይቶች የሚከተሉትን መስኮች ለመቀየር ችግር ይፈጥራሉ።
ይህንን ለመፍታት declare_program! ከ anchor_client እንዲጠቀሙ እመክራለሁ። በዚህ መንገድ ተመሳሳዩን አሰራር በፕሮግራምዎ እና በደንበኛዎ ውስጥ በእጅ መተግበር አያስፈልግዎትም እና መልሶ መቀየር በነጻ ይተገበርልዎታል። ከዚህ ጥያቄ በመቅዳት፦
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?;
ይህንን ማድረግ ካልቻሉ ግን BorshDeserialize::deserialize እንዲጠቀሙ እመክራለሁ ምክንያቱም እንደተናገርኩት ችግርዎ ብዙ ባይቶች መኖራቸው ነው።
Proposal::deserialize(&mut &data[..]).unwrap();
ይህ ግን መሰረታዊው የባይት ድርድርዎ ወደ ቀሪዎቹ ባይቶች እንዲጠቁም ይለውጠዋል። ይህ ጥሩ ነው ብዬ እገምታለሁ ምክንያቱም ምናልባት እነዚያን ተመሳሳይ ባይቶች ለሌላ ነገር አይጠቀሙባቸውም፣ ግን ለእርስዎ እውቀት።