sol-chainsaw 0.0.2

Deserializing Solana accounts using their progam IDL
Documentation
use std::fmt::Write;

use crate::errors::ChainsawResult;

use super::json_idl_field_de::JsonIdlFieldDeserializer;

pub fn deserialize_fields_to_object<'opts, W: Write>(
    f: &mut W,
    buf: &mut &[u8],
    fields: &[JsonIdlFieldDeserializer<'opts>],
) -> ChainsawResult<()> {
    f.write_char('{')?;

    for (i, field_de) in fields.iter().enumerate() {
        field_de.deserialize(f, buf)?;
        if (i + 1) < fields.len() {
            f.write_char(',')?;
        }
    }

    f.write_char('}')?;

    Ok(())
}

#[inline(always)]
pub fn write_quoted<W: Write>(
    f: &mut W,
    s: &str,
) -> Result<(), std::fmt::Error> {
    f.write_str("\"")?;
    f.write_str(s)?;
    f.write_str("\"")
}