ferment-sys 0.2.14

Syntax tree morphing of FFI-compatible stuff
Documentation
use crate::ast::Depunctuated;
use crate::composer::{ImplComposer, SourceAccessible, SourceComposable, SourceFermentable};
use crate::lang::RustSpecification;
use crate::presentation::{DocPresentation, RustFermentate};

impl SourceFermentable<RustFermentate> for ImplComposer<RustSpecification> {
    fn ferment(&self) -> RustFermentate {
        let mut items = Depunctuated::<RustFermentate>::new();
        self.methods.iter().for_each(|sig_composer| {
            let fermentate = sig_composer.borrow().ferment();
            items.push(fermentate);
        });
        let vtable = self.vtable.as_ref()
            .map(|composer| {
                let composer = composer.borrow();
                let composer_source = composer.source_ref();
                composer.compose(&composer_source)
            });
        RustFermentate::Impl { comment: DocPresentation::Empty, items, vtable }
    }
}