diff options
| author | Andreas Hindborg <a.hindborg@kernel.org> | 2025-09-24 14:39:28 +0200 |
|---|---|---|
| committer | Daniel Gomez <da.gomez@kernel.org> | 2025-11-03 14:42:29 +0100 |
| commit | 0b24f9740f26ac7ad91ac0f4de27717c14de91bd (patch) | |
| tree | f76bfb95958797f2fbc014d46774fc7eda786954 /rust/macros/helpers.rs | |
| parent | 3809d7a89fe550bf4065c04adff6dac610daddad (diff) | |
rust: module: update the module macro with module parameter support
Allow module parameters to be declared in the rust `module!` macro.
Reviewed-by: Benno Lossin <lossin@kernel.org>
Signed-off-by: Andreas Hindborg <a.hindborg@kernel.org>
Tested-by: Daniel Gomez <da.gomez@samsung.com>
Signed-off-by: Daniel Gomez <da.gomez@kernel.org>
Diffstat (limited to 'rust/macros/helpers.rs')
| -rw-r--r-- | rust/macros/helpers.rs | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/rust/macros/helpers.rs b/rust/macros/helpers.rs index e2602be402c1..365d7eb499c0 100644 --- a/rust/macros/helpers.rs +++ b/rust/macros/helpers.rs @@ -10,6 +10,17 @@ pub(crate) fn try_ident(it: &mut token_stream::IntoIter) -> Option<String> { } } +pub(crate) fn try_sign(it: &mut token_stream::IntoIter) -> Option<char> { + let peek = it.clone().next(); + match peek { + Some(TokenTree::Punct(punct)) if punct.as_char() == '-' => { + let _ = it.next(); + Some(punct.as_char()) + } + _ => None, + } +} + pub(crate) fn try_literal(it: &mut token_stream::IntoIter) -> Option<String> { if let Some(TokenTree::Literal(literal)) = it.next() { Some(literal.to_string()) @@ -103,3 +114,17 @@ pub(crate) fn file() -> String { proc_macro::Span::call_site().file() } } + +/// Parse a token stream of the form `expected_name: "value",` and return the +/// string in the position of "value". +/// +/// # Panics +/// +/// - On parse error. +pub(crate) fn expect_string_field(it: &mut token_stream::IntoIter, expected_name: &str) -> String { + assert_eq!(expect_ident(it), expected_name); + assert_eq!(expect_punct(it), ':'); + let string = expect_string(it); + assert_eq!(expect_punct(it), ','); + string +} |
