cargo-insert-docs 1.6.0

Inserts feature docs into crate docs, and crate docs into README.
use std::fmt;

use tracing::field::{Field, Visit};

pub trait VisitStr {
    fn record_str(&mut self, field: &Field, value: &str);
}

pub struct VisitAsStr<'a, T>(pub &'a mut T);

impl<T: VisitStr> Visit for VisitAsStr<'_, T> {
    fn record_debug(&mut self, field: &Field, value: &dyn fmt::Debug) {
        self.record_str(field, &format!("{value:?}"))
    }

    fn record_f64(&mut self, field: &Field, value: f64) {
        self.record_str(field, &format!("{value}"))
    }

    fn record_i64(&mut self, field: &Field, value: i64) {
        self.record_str(field, &format!("{value}"))
    }

    fn record_u64(&mut self, field: &Field, value: u64) {
        self.record_str(field, &format!("{value}"))
    }

    fn record_i128(&mut self, field: &Field, value: i128) {
        self.record_str(field, &format!("{value}"))
    }

    fn record_u128(&mut self, field: &Field, value: u128) {
        self.record_str(field, &format!("{value}"))
    }

    fn record_bool(&mut self, field: &Field, value: bool) {
        self.record_str(field, &format!("{value}"))
    }

    fn record_str(&mut self, field: &Field, value: &str) {
        self.0.record_str(field, value);
    }
}