fn fmt()

in reverie-syscalls/src/args/mod.rs [117:156]


    fn fmt<M: MemoryAccess>(
        &self,
        memory: &M,
        outputs: bool,
        f: &mut fmt::Formatter,
    ) -> fmt::Result {
        match self {
            None => f.write_str("NULL"),
            Some(array) => match array.read(memory) {
                Ok(v) => {
                    write!(f, "{} -> [", array.0)?;

                    let mut count = 0;

                    let mut iter = v.into_iter();

                    if let Some(item) = iter.next() {
                        item.fmt(memory, outputs, f)?;
                        count += 1;
                    }

                    for item in iter {
                        f.write_str(", ")?;

                        // Only print the first 32 arguments like strace does.
                        if count > 32 {
                            f.write_str("...")?;
                            break;
                        }

                        item.fmt(memory, outputs, f)?;
                        count += 1;
                    }

                    f.write_str("]")
                }
                Err(e) => write!(f, "{} -> <{}>", array.0, e),
            },
        }
    }