we should arrange things so that the following macro can be affixed to a struct marked AIDescriptor this will automatically derive `Display` simply by calling x.ai() since our type can already do `AIDescriptor` #[ai(Display)] here is what we can affix to a struct field: #[ai(none="Here is the piece we include in the ai string in the case we have a null option")] we should be able to handle cases like this: #[derive(Default,AIDescriptor,Debug,Clone,Serialize,Deserialize,PartialEq,Eq)] #[ai(Display)] pub struct LyricalMeter { foot: MetricalFoot, #[ai(none="The number of feet per line is flexible.")] line_length: Option, } this should work if MetricalFoot and LineLength implement AIDescriptor if `line_length` is none, the none="" message should be displayed during the `ai` call we also want to handle cases like this: #[derive(AIDescriptor,Debug,Clone,Serialize,Deserialize,PartialEq,Eq)] #[ai(Display)] pub enum Meter { Standard(LyricalMeter), Other(OtherMeter), } this should work as long as LyricalMeter and OtherMeter both implement AIDescriptor