codama_attributes/codama_directives/
fixed_size_directive.rs1use 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}