Preguntas y respuestas

¿Cómo puedo deserializar la cuenta en Rust?

Tamaño del texto
El problema con el #[max_len(32)] que falta es que la cuenta serializada contiene una cadena rellenada con 0 bytes para hacer 32 bytes, mientras que la estructura de deserialización intenta deserializar solo la longitud de su cadena en bytes y luego los 0 bytes restantes la estropean para deserializar los siguientes campos. Para solucionar este problema, recomiendo usar declare_program. de Anchor_client. De esa manera no es necesario implementar la misma estructura manualmente ensu programa y cliente y obtendrá la deserialización implementada de forma gratuita. Copiar y pegar de esta pregunta: declarar_programa!(mi_programa); utilizar my_program::{ID, cuentas::Propuesta}; utilizar Anchor_client::Cliente; let cl = Cliente::new_with_options( grupo, pagador de tarifas, CompromisoConfig::confirmado(), ); let p = cl.program(ID).unwrap(); let acc_state: Propuesta = p.account().await?; Sin embargo, si no puede hacer esto, le recomiendo usar BorshDeserialize::deserialize como dije, su problema es tener demasiados bytes. Propuesta::deserialize(&mut &data[..]).unwrap(); Tenga en cuenta que esto mutará su matriz de bytes subyacente para que apunte a los bytes restantes. Supongo que esto está bien, ya que probablemente no usarás esos mismos bytes para nada más, solo para tu información.
Seguir explorandoCatálogo de datosBuscar