termint 0.9.0

Library for colored printing and Terminal User Interfaces
Documentation
use criterion::{Criterion, black_box, criterion_group};
use termint::{
    buffer::Buffer,
    geometry::Rect,
    widgets::{Element, LayoutNode, ToSpan, Widget},
};

fn benchmark_span(c: &mut Criterion) {
    let rect = Rect::new(1, 1, 100, 100);
    let buffer = Buffer::empty(rect);
    let lorem = "Lorem ipsum odor amet, consectetuer adipiscing elit. Fames pretium felis ornare class accumsan. Orci molestie morbi suspendisse pellentesque magna aptent mus dignissim. Posuere vestibulum conubia luctus purus pharetra mattis ultricies. Auctor nibh tellus lectus sodales, nisi est facilisi ultrices. Maecenas sodales pretium dis aptent felis. Fames at habitasse natoque consectetur per aenean. Suscipit accumsan nascetur blandit ad urna. Elit senectus aenean eros; vestibulum libero euismod. Torquent sapien sociosqu adipiscing gravida, rutrum mi.
Habitasse curabitur curae sollicitudin ullamcorper aliquet bibendum blandit. Nibh velit sodales porttitor mus sodales hac montes potenti. Arcu commodo risus massa luctus neque. Condimentum nullam dictum fermentum pharetra eros luctus pharetra. Rutrum tempus lobortis nam senectus ullamcorper. Ultrices odio ad etiam sollicitudin proin ultrices metus. Finibus nisi quam inceptos fames vehicula iaculis molestie nisl. Nisl parturient cubilia class habitant fringilla sollicitudin; laoreet curae dignissim. Orci quisque dolor dignissim enim sit aliquet elementum.
Ullamcorper nunc aptent id dapibus luctus. Turpis et nullam aliquet montes accumsan volutpat. Senectus massa pellentesque maximus suspendisse urna neque nulla nascetur. Porta primis porttitor enim consectetur accumsan montes. Commodo cubilia sodales gravida finibus commodo conubia. Rhoncus at nullam dis ultricies commodo, himenaeos conubia dictum. Nibh bibendum odio sodales diam nunc!
Sagittis neque platea inceptos nostra finibus justo dictum fringilla. Elementum etiam curae nisl tempor orci penatibus massa mollis? Rutrum fusce mus nunc nulla tellus porttitor arcu. Malesuada sodales cras senectus euismod etiam quis. Dis sollicitudin primis a curae id nulla porta porttitor. Eget ligula diam ultrices laoreet erat class. Duis platea dis velit tincidunt amet morbi bibendum sit. Velit pulvinar rhoncus aptent condimentum semper.
Fringilla litora ac curae ipsum dictum scelerisque. Mauris sed netus mollis nam platea. Justo habitasse himenaeos nibh fames eleifend quisque eu litora. Conubia vehicula volutpat a per rhoncus volutpat vehicula. Suscipit duis facilisi tempus interdum etiam sapien. Accumsan dolor proin feugiat facilisi et nostra. Class arcu congue laoreet augue; mattis hac suspendisse non. Convallis sed consectetur dictum efficitur in dis. Vivamus pulvinar enim diam dui netus quisque.
Gravida maecenas in dignissim pretium taciti. Curae phasellus metus nostra quis vitae duis fames aliquet. Nullam quisque per habitasse aenean leo duis accumsan penatibus ac. Tincidunt iaculis dui diam curae augue netus. Quam aliquam fringilla fames vel ridiculus. Lobortis sodales placerat maximus venenatis praesent litora.
Enim porttitor convallis leo sapien posuere ridiculus donec. Lectus malesuada venenatis dictumst phasellus suspendisse lectus sit. Sagittis ante lorem orci pharetra duis id ad aliquet. Egestas pellentesque lacinia natoque laoreet himenaeos facilisis himenaeos quam ultricies. Ultrices dis consectetur faucibus, arcu magna ipsum placerat est. Semper interdum fermentum integer cras sollicitudin sociosqu eget vehicula. Tempor faucibus est lectus lacus lacinia sociosqu. Molestie proin dis ligula enim neque accumsan? Amet mus a viverra massa vitae praesent finibus placerat.
Tellus potenti cursus efficitur, purus finibus bibendum ridiculus. Orci at cursus cras lobortis scelerisque tempus. Potenti cursus rutrum quam semper nec imperdiet dolor purus. Venenatis aenean bibendum non lobortis purus ad proin elit. Porttitor fringilla urna semper ac tristique libero eleifend. Imperdiet dui maecenas maximus euismod conubia neque justo potenti. Elit molestie metus ultrices nostra aptent non netus lacus integer.
Mattis eget consectetur velit potenti praesent semper aptent. Erat tincidunt elit nulla nibh netus dis. Penatibus nostra curabitur lacus taciti per proin. Neque nunc tincidunt pretium justo nascetur senectus; neque pulvinar vivamus. Risus pulvinar rutrum elementum massa elementum vitae enim. Viverra aliquet faucibus massa aliquet condimentum, nascetur justo. Nam phasellus mus; tincidunt consectetur sapien metus velit aptent.
Class mollis tempor eu ultrices convallis porta ullamcorper senectus. Nulla sollicitudin tristique tempus aenean risus fermentum venenatis semper. Inceptos quis ornare ornare pharetra vestibulum scelerisque pretium. Lacinia nunc posuere efficitur phasellus porttitor orci venenatis. Mollis magna vehicula tempus senectus hendrerit auctor imperdiet. Torquent cubilia maecenas suscipit ex nostra tristique leo.
Ex ipsum volutpat aptent finibus pretium eget lobortis pretium. Efficitur interdum neque ante; erat etiam leo. Fermentum netus tincidunt quisque, tempus consectetur netus praesent. Molestie urna maecenas interdum fermentum magna malesuada. Aliquet aenean potenti sapien inceptos sit. In consequat urna; odio mauris montes suscipit feugiat. Vulputate imperdiet proin imperdiet accumsan, eget dignissim nostra. Aliquet vulputate facilisi ullamcorper amet augue quisque porttitor accumsan. Eget eu nostra elementum risus magna dignissim tellus commodo. Auctor odio suspendisse penatibus accumsan eleifend.
Porttitor est nascetur id, nostra dapibus accumsan malesuada eget. Nascetur luctus non mi laoreet nibh sed. Vehicula luctus magnis ac dictum morbi facilisi dignissim. Cras lacus ullamcorper conubia accumsan etiam egestas etiam interdum ante. Mi pellentesque ac neque tempus mauris habitasse, ante rhoncus. Natoque ligula posuere adipiscing tempus laoreet fames taciti pulvinar. Eget lectus justo finibus natoque augue tortor sed. Rutrum est tortor ante nullam lacinia. Nulla egestas tortor aenean diam natoque scelerisque.
Lacus dui felis tortor aptent commodo nisi condimentum iaculis. Suscipit varius justo taciti ut; quisque augue. Nascetur vestibulum rhoncus sapien eget ac; eleifend maximus lorem. Magnis nam senectus magna ultricies dapibus dolor erat inceptos. Ac fames tristique taciti iaculis dui aliquet urna. Congue etiam nostra quam cubilia taciti urna nec orci. Vitae per pharetra dui dui hac tempus habitant in rhoncus? Pharetra hac molestie iaculis blandit cubilia integer.
Taciti ipsum vestibulum molestie vel eu efficitur feugiat? Sagittis per amet proin; magnis quam maximus. Laoreet augue habitant cursus sodales fusce nostra. Dignissim ante maximus suscipit et libero felis laoreet proin lobortis. Neque diam laoreet quam ridiculus mauris nec elit. Erat suspendisse elementum elit interdum sapien feugiat hac. Commodo nulla suspendisse varius magnis metus sollicitudin accumsan. Feugiat litora dignissim tellus dui porta aptent diam. Natoque neque interdum mattis quisque duis sed vulputate tempus est.
Adipiscing ac nostra eget rutrum consequat duis ante placerat. Vel id tortor ipsum pretium; natoque phasellus ut nunc auctor. Morbi rhoncus commodo, faucibus vitae mollis conubia eu. Ipsum fames integer nunc fringilla aenean. Iaculis mi curabitur tempor potenti leo libero venenatis. Quisque porttitor facilisi tempor cubilia morbi tristique? Sit quam dui fermentum lobortis proin semper.
Sapien cursus curae cursus; porttitor non dictumst facilisis. Vulputate sit lobortis placerat dignissim vehicula. Tempus dictumst aptent iaculis arcu sollicitudin donec. Sit accumsan enim sapien mauris venenatis proin duis pretium nullam. Cubilia nisl platea metus eleifend tortor hac leo. Placerat arcu pharetra in magna, lacus sollicitudin dapibus ullamcorper proin. Dignissim sollicitudin blandit inceptos ornare; eget tristique vel. Consectetur ornare congue mollis accumsan non vel integer. Blandit fringilla finibus cubilia diam ante consectetur est dapibus pretium.
Ad mus nibh aptent donec elit. Aliquet facilisis at commodo leo ipsum sit eleifend sed. Natoque ullamcorper curae vestibulum odio diam quis imperdiet. Bibendum accumsan diam parturient vivamus ultricies pulvinar, aliquam fames. Aliquet turpis praesent ultricies lacus ultrices faucibus. Adui curae quisque, a ex consequat.
Vel eleifend luctus sed vestibulum; netus magnis. Tempor eget urna sapien ut interdum id. Nam fusce sodales natoque suspendisse fringilla. Ut felis fermentum arcu potenti tempor auctor per cras mattis. Primis purus tellus viverra semper sociosqu augue malesuada class mattis. Varius etiam eu netus netus ad. Malesuada magna lobortis dui accumsan ullamcorper lobortis erat purus. Dapibus nisl taciti natoque erat cras elit? Dignissim primis sociosqu nulla magnis proin mauris.
Neque potenti egestas ante turpis lacinia ipsum. Et nam dis feugiat lorem euismod turpis fringilla. Purus nostra nisi mauris sociosqu molestie lectus sagittis pellentesque neque. Sit magnis nunc; porta venenatis auctor scelerisque amet mauris. Mauris cras vitae ultrices cursus dapibus class elit donec consectetur. Augue mus placerat sagittis eleifend rhoncus per lacinia. Risus integer tristique iaculis tincidunt condimentum vulputate curae. Gravida nullam finibus fusce fermentum penatibus felis accumsan magnis. Lobortis non bibendum dignissim rutrum imperdiet vivamus.
Nostra quisque tellus orci natoque malesuada. Sed feugiat cubilia sed consequat torquent. Dui dignissim libero pellentesque vitae felis dignissim dapibus penatibus. Praesent malesuada eleifend maecenas penatibus erat facilisis nisi maximus ridiculus. Torquent nostra cras viverra aenean facilisis accumsan odio suscipit elit? Et semper interdum fermentum hendrerit, hendrerit facilisis fusce. Metus nulla mus ullamcorper justo cursus mollis. Vivamus gravida tortor vel sollicitudin faucibus; et cubilia maecenas risus. Scelerisque est curae habitasse nascetur suspendisse efficitur ultricies vehicula."
        .to_span();

    let lorem: Element<()> = lorem.into();

    let layout = LayoutNode::new(&lorem);

    c.bench_function("span_render", |b| {
        b.iter(|| {
            lorem.render(black_box(&mut buffer.clone()), black_box(&layout))
        });
    });
}

criterion_group!(benches, benchmark_span);