(&self)
| 1701 | |
| 1702 | impl MemberItemMeta { |
| 1703 | fn member_name(&self) -> Result<(String, MemberItemKind)> { |
| 1704 | let inner = self.inner(); |
| 1705 | let sig_name = inner.item_name(); |
| 1706 | let extract_prefix_name = |prefix, item_typ| { |
| 1707 | if let Some(name) = sig_name.strip_prefix(prefix) { |
| 1708 | if name.is_empty() { |
| 1709 | Err(err_span!( |
| 1710 | inner.meta_ident, |
| 1711 | r#"A #[{}({typ})] fn with a {prefix}* name must \ |
| 1712 | have something after "{prefix}""#, |
| 1713 | inner.meta_name(), |
| 1714 | typ = item_typ, |
| 1715 | prefix = prefix |
| 1716 | )) |
| 1717 | } else { |
| 1718 | Ok(name.to_owned()) |
| 1719 | } |
| 1720 | } else { |
| 1721 | Err(err_span!( |
| 1722 | inner.meta_ident, |
| 1723 | r#"A #[{}(setter)] fn must either have a `name` \ |
| 1724 | parameter or a fn name along the lines of "set_*""#, |
| 1725 | inner.meta_name() |
| 1726 | )) |
| 1727 | } |
| 1728 | }; |
| 1729 | let kind = if inner._bool("setter")? { |
| 1730 | MemberItemKind::Set |
| 1731 | } else { |
| 1732 | MemberItemKind::Get |
| 1733 | }; |
| 1734 | let name = match kind { |
| 1735 | MemberItemKind::Get => sig_name, |
| 1736 | MemberItemKind::Set => extract_prefix_name("set_", "setter")?, |
| 1737 | }; |
| 1738 | Ok((name, kind)) |
| 1739 | } |
| 1740 | |
| 1741 | fn member_kind(&self) -> Result<Option<String>> { |
| 1742 | let inner = self.inner(); |
no test coverage detected