#[cfg(feature = "types")]
use crate::types::Type;
use super::{Pair, Vector};
pub trait Visitor {
type Result;
fn visit_nil(&mut self) -> Self::Result;
fn visit_true(&mut self) -> Self::Result;
fn visit_false(&mut self) -> Self::Result;
fn visit_char(&mut self, value: char) -> Self::Result;
fn visit_integer(&mut self, value: i64) -> Self::Result;
fn visit_float(&mut self, value: f64) -> Self::Result;
fn visit_pair(&mut self, value: &Pair<'_>) -> Self::Result;
fn visit_string(&mut self, value: &str) -> Self::Result;
fn visit_symbol(&mut self, value: &str) -> Self::Result;
fn visit_bytevec(&mut self, value: &[u8]) -> Self::Result;
fn visit_vector(&mut self, value: &Vector<'_>) -> Self::Result;
#[cfg(feature = "types")]
#[cfg_attr(docsrs, doc(cfg(feature = "types")))]
fn visit_type(&mut self, value: &Type) -> Self::Result;
}