letter_sequence/
element.rs

1use std::fmt;
2use std::convert::From;
3use crate::sequence::renderer;
4
5
6#[derive(Builder, Clone, Debug, PartialEq, Eq)]
7#[builder(derive(PartialEq, Eq))]
8pub struct Element {
9	inner: u64,
10	renderer: renderer::SeqRenderer,
11}
12
13impl fmt::Display for Element {
14	fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
15		write!(f, "{}", self.renderer.render( self.inner ).unwrap() )
16	}
17}
18
19impl From<Element> for u64 {
20	fn from(e: Element) -> u64 {
21		e.inner
22	}
23}
24
25#[cfg(test)]
26mod test {
27	use super::*;
28	#[test]
29	fn display() {
30		let seqrender = renderer::SeqRendererBuilder::numeric().build().unwrap();
31		let elem = ElementBuilder::default()
32			.inner(42u64)
33			.renderer(seqrender)
34			.build()
35			.unwrap();
36		assert_eq!( elem.to_string(), "42" );
37	}
38}