diff options
| author | 2023-12-14 13:31:28 +0100 | |
|---|---|---|
| committer | 2023-12-14 13:43:12 +0100 | |
| commit | b7fc0d3e16ff850a20844cc6045b8ea00e3ca90e (patch) | |
| tree | 52c90e2ee2a54aa0db68ccc1e1a3ad060e6a65f3 | |
| parent | 3f2432967b1797385bdb22e98ca7768ce40321f1 (diff) | |
aconfig: pass ownership of ProtoParsedFlag items to Rust codegen
Pass ownership of the ProtoParsedFlag iterator items to the Rust
codegen: this removes the need for an explicit lifetime annotation.
Bug: N/A
Test: atest aconfig.test
Change-Id: Ia37ff9f1238684ea31cda6be70acde54fdb04881
| -rw-r--r-- | tools/aconfig/src/codegen/rust.rs | 15 | ||||
| -rw-r--r-- | tools/aconfig/src/commands.rs | 3 |
2 files changed, 11 insertions, 7 deletions
diff --git a/tools/aconfig/src/codegen/rust.rs b/tools/aconfig/src/codegen/rust.rs index 04be93b96a..7aafddbea9 100644 --- a/tools/aconfig/src/codegen/rust.rs +++ b/tools/aconfig/src/codegen/rust.rs @@ -22,16 +22,16 @@ use crate::codegen; use crate::commands::{CodegenMode, OutputFile}; use crate::protos::{ProtoFlagPermission, ProtoFlagState, ProtoParsedFlag}; -pub fn generate_rust_code<'a, I>( +pub fn generate_rust_code<I>( package: &str, parsed_flags_iter: I, codegen_mode: CodegenMode, ) -> Result<OutputFile> where - I: Iterator<Item = &'a ProtoParsedFlag>, + I: Iterator<Item = ProtoParsedFlag>, { let template_flags: Vec<TemplateParsedFlag> = - parsed_flags_iter.map(|pf| TemplateParsedFlag::new(package, pf)).collect(); + parsed_flags_iter.map(|pf| TemplateParsedFlag::new(package, &pf)).collect(); let has_readwrite = template_flags.iter().any(|item| item.readwrite); let context = TemplateContext { package: package.to_string(), @@ -456,9 +456,12 @@ pub fn reset_flags() { fn test_generate_rust_code(mode: CodegenMode) { let parsed_flags = crate::test::parse_test_flags(); - let generated = - generate_rust_code(crate::test::TEST_PACKAGE, parsed_flags.parsed_flag.iter(), mode) - .unwrap(); + let generated = generate_rust_code( + crate::test::TEST_PACKAGE, + parsed_flags.parsed_flag.into_iter(), + mode, + ) + .unwrap(); assert_eq!("src/lib.rs", format!("{}", generated.path.display())); assert_eq!( None, diff --git a/tools/aconfig/src/commands.rs b/tools/aconfig/src/commands.rs index e437c02144..d60ebcfae0 100644 --- a/tools/aconfig/src/commands.rs +++ b/tools/aconfig/src/commands.rs @@ -219,7 +219,8 @@ pub fn create_rust_lib(mut input: Input, codegen_mode: CodegenMode) -> Result<Ou let Some(package) = find_unique_package(&filtered_parsed_flags) else { bail!("no parsed flags, or the parsed flags use different packages"); }; - generate_rust_code(package, filtered_parsed_flags.iter(), codegen_mode) + let package = package.to_string(); + generate_rust_code(&package, filtered_parsed_flags.into_iter(), codegen_mode) } pub fn create_storage(caches: Vec<Input>, container: &str) -> Result<Vec<OutputFile>> { |