codama_attributes/codama_directives/
fixed_size_directive.rs

1use codama_syn_helpers::{extensions::*, Meta};
2
3#[derive(Debug, PartialEq)]
4pub struct FixedSizeDirective {
5    pub size: usize,
6}
7
8impl FixedSizeDirective {
9    pub fn parse(meta: &Meta) -> syn::Result<Self> {
10        let pv = meta.assert_directive("fixed_size")?.as_path_value()?;
11        let size = pv.value.as_expr()?.as_literal_integer()?;
12        Ok(Self { size })
13    }
14}
15
16#[cfg(test)]
17mod tests {
18    use super::*;
19
20    #[test]
21    fn ok() {
22        let meta: Meta = syn::parse_quote! { fixed_size = 42 };
23        let directive = FixedSizeDirective::parse(&meta).unwrap();
24        assert_eq!(directive, FixedSizeDirective { size: 42 });
25    }
26}