diff --git a/tools/aconfig/aconfig/src/codegen/rust.rs b/tools/aconfig/aconfig/src/codegen/rust.rs
index 1292e0a..16f9f2c 100644
--- a/tools/aconfig/aconfig/src/codegen/rust.rs
+++ b/tools/aconfig/aconfig/src/codegen/rust.rs
@@ -122,31 +122,36 @@
 /// flag provider
 pub struct FlagProvider;
 
-lazy_static::lazy_static! {
     /// flag value cache for disabled_rw
+lazy_static::lazy_static! {
     static ref CACHED_disabled_rw: bool = flags_rust::GetServerConfigurableFlag(
         "aconfig_flags.aconfig_test",
         "com.android.aconfig.test.disabled_rw",
         "false") == "true";
+}
 
     /// flag value cache for disabled_rw_exported
+lazy_static::lazy_static! {
     static ref CACHED_disabled_rw_exported: bool = flags_rust::GetServerConfigurableFlag(
         "aconfig_flags.aconfig_test",
         "com.android.aconfig.test.disabled_rw_exported",
         "false") == "true";
+}
 
     /// flag value cache for disabled_rw_in_other_namespace
+lazy_static::lazy_static! {
     static ref CACHED_disabled_rw_in_other_namespace: bool = flags_rust::GetServerConfigurableFlag(
         "aconfig_flags.other_namespace",
         "com.android.aconfig.test.disabled_rw_in_other_namespace",
         "false") == "true";
+}
 
     /// flag value cache for enabled_rw
+lazy_static::lazy_static! {
     static ref CACHED_enabled_rw: bool = flags_rust::GetServerConfigurableFlag(
         "aconfig_flags.aconfig_test",
         "com.android.aconfig.test.enabled_rw",
         "true") == "true";
-
 }
 
 impl FlagProvider {
@@ -269,7 +274,6 @@
 pub struct FlagProvider;
 
 lazy_static::lazy_static! {
-
     static ref PACKAGE_OFFSET: Result<Option<u32>, AconfigStorageError> = unsafe {
         get_mapped_storage_file("system", StorageFileType::PackageMap)
         .and_then(|package_map| get_package_read_context(&package_map, "com.android.aconfig.test"))
@@ -279,8 +283,10 @@
     static ref FLAG_VAL_MAP: Result<Mmap, AconfigStorageError> = unsafe {
         get_mapped_storage_file("system", StorageFileType::FlagVal)
     };
-    /// flag value cache for disabled_rw
+}
 
+    /// flag value cache for disabled_rw
+lazy_static::lazy_static! {
     static ref CACHED_disabled_rw: bool = {
         let result = flags_rust::GetServerConfigurableFlag(
             "aconfig_flags.aconfig_test",
@@ -344,9 +350,10 @@
 
         result
         };
+}
 
     /// flag value cache for disabled_rw_exported
-
+lazy_static::lazy_static! {
     static ref CACHED_disabled_rw_exported: bool = {
         let result = flags_rust::GetServerConfigurableFlag(
             "aconfig_flags.aconfig_test",
@@ -410,9 +417,10 @@
 
         result
         };
+}
 
     /// flag value cache for disabled_rw_in_other_namespace
-
+lazy_static::lazy_static! {
     static ref CACHED_disabled_rw_in_other_namespace: bool = {
         let result = flags_rust::GetServerConfigurableFlag(
             "aconfig_flags.other_namespace",
@@ -476,9 +484,10 @@
 
         result
         };
+}
 
     /// flag value cache for enabled_rw
-
+lazy_static::lazy_static! {
     static ref CACHED_enabled_rw: bool = {
         let result = flags_rust::GetServerConfigurableFlag(
             "aconfig_flags.aconfig_test",
@@ -542,7 +551,6 @@
 
         result
         };
-
 }
 
 impl FlagProvider {
@@ -1216,25 +1224,28 @@
 /// flag provider
 pub struct FlagProvider;
 
-lazy_static::lazy_static! {
     /// flag value cache for disabled_rw_exported
+lazy_static::lazy_static! {
     static ref CACHED_disabled_rw_exported: bool = flags_rust::GetServerConfigurableFlag(
         "aconfig_flags.aconfig_test",
         "com.android.aconfig.test.disabled_rw_exported",
         "false") == "true";
+}
 
     /// flag value cache for enabled_fixed_ro_exported
+lazy_static::lazy_static! {
     static ref CACHED_enabled_fixed_ro_exported: bool = flags_rust::GetServerConfigurableFlag(
         "aconfig_flags.aconfig_test",
         "com.android.aconfig.test.enabled_fixed_ro_exported",
         "false") == "true";
+}
 
     /// flag value cache for enabled_ro_exported
+lazy_static::lazy_static! {
     static ref CACHED_enabled_ro_exported: bool = flags_rust::GetServerConfigurableFlag(
         "aconfig_flags.aconfig_test",
         "com.android.aconfig.test.enabled_ro_exported",
         "false") == "true";
-
 }
 
 impl FlagProvider {
diff --git a/tools/aconfig/aconfig/templates/rust.template b/tools/aconfig/aconfig/templates/rust.template
index 77a9984..e7287d2 100644
--- a/tools/aconfig/aconfig/templates/rust.template
+++ b/tools/aconfig/aconfig/templates/rust.template
@@ -12,8 +12,8 @@
 pub struct FlagProvider;
 
 {{ if has_readwrite- }}
+{{ if allow_instrumentation }}
 lazy_static::lazy_static! \{
-    {{ if allow_instrumentation }}
     static ref PACKAGE_OFFSET: Result<Option<u32>, AconfigStorageError> = unsafe \{
         get_mapped_storage_file("{container}", StorageFileType::PackageMap)
         .and_then(|package_map| get_package_read_context(&package_map, "{package}"))
@@ -23,12 +23,14 @@
     static ref FLAG_VAL_MAP: Result<Mmap, AconfigStorageError> = unsafe \{
         get_mapped_storage_file("{container}", StorageFileType::FlagVal)
     };
-    {{ -endif }}
-
+}
+{{ -endif }}
 {{ -for flag in template_flags }}
-    {{ -if flag.readwrite }}
-    /// flag value cache for {flag.name}
-    {{ if allow_instrumentation }}
+
+{{ -if flag.readwrite }}
+/// flag value cache for {flag.name}
+{{ if allow_instrumentation }}
+lazy_static::lazy_static! \{
     static ref CACHED_{flag.name}: bool = \{
         let result = flags_rust::GetServerConfigurableFlag(
             "aconfig_flags.{flag.device_config_namespace}",
@@ -92,15 +94,17 @@
 
         result
         };
-    {{ else }}
+}
+{{ else }}
+lazy_static::lazy_static! \{
     static ref CACHED_{flag.name}: bool = flags_rust::GetServerConfigurableFlag(
         "aconfig_flags.{flag.device_config_namespace}",
         "{flag.device_config_flag}",
         "{flag.default_value}") == "true";
-    {{ endif }}
-    {{ -endif }}
-{{ -endfor }}
 }
+{{ endif }}
+{{ -endif }}
+{{ -endfor }}
 {{ -endif }}
 
 impl FlagProvider \{
