Skip to content

Commit 3d2b9bc

Browse files
committed
chore(shortint): modswitch noise reduction key upgrade without clone
1 parent 7908d6f commit 3d2b9bc

File tree

1 file changed

+10
-12
lines changed

1 file changed

+10
-12
lines changed

tfhe/src/shortint/backward_compatibility/server_key/modulus_switch_noise_reduction.rs

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -26,21 +26,20 @@ where
2626
type Error = Error;
2727

2828
fn upgrade(self) -> Result<ModulusSwitchNoiseReductionKey<InputScalar>, Self::Error> {
29-
let modulus_switch_zeros = &self.modulus_switch_zeros as &dyn Any;
29+
let modulus_switch_zeros: Box<dyn Any> = Box::new(self.modulus_switch_zeros);
3030

3131
// Keys from previous versions where only stored as u64, we check if the destination
3232
// key is also u64 or we return an error
3333
Ok(ModulusSwitchNoiseReductionKey {
34-
modulus_switch_zeros: modulus_switch_zeros
35-
.downcast_ref::<LweCiphertextListOwned<InputScalar>>()
36-
.ok_or_else(|| {
34+
modulus_switch_zeros: *modulus_switch_zeros
35+
.downcast::<LweCiphertextListOwned<InputScalar>>()
36+
.map_err(|_| {
3737
Error::new(format!(
3838
"Expected u64 as InputScalar while upgrading \
3939
ModulusSwitchNoiseReductionKey, got {}",
4040
std::any::type_name::<InputScalar>(),
4141
))
42-
})?
43-
.clone(),
42+
})?,
4443
ms_bound: self.ms_bound,
4544
ms_r_sigma_factor: self.ms_r_sigma_factor,
4645
ms_input_variance: self.ms_input_variance,
@@ -73,21 +72,20 @@ where
7372
type Error = Error;
7473

7574
fn upgrade(self) -> Result<CompressedModulusSwitchNoiseReductionKey<InputScalar>, Self::Error> {
76-
let modulus_switch_zeros = &self.modulus_switch_zeros as &dyn Any;
75+
let modulus_switch_zeros: Box<dyn Any> = Box::new(self.modulus_switch_zeros);
7776

7877
// Keys from previous versions where only stored as u64, we check if the destination
7978
// key is also u64 or we return an error
8079
Ok(CompressedModulusSwitchNoiseReductionKey {
81-
modulus_switch_zeros: modulus_switch_zeros
82-
.downcast_ref::<SeededLweCiphertextListOwned<InputScalar>>()
83-
.ok_or_else(|| {
80+
modulus_switch_zeros: *modulus_switch_zeros
81+
.downcast::<SeededLweCiphertextListOwned<InputScalar>>()
82+
.map_err(|_| {
8483
Error::new(format!(
8584
"Expected u64 as InputScalar while upgrading \
8685
CompressedModulusSwitchNoiseReductionKey, got {}",
8786
std::any::type_name::<InputScalar>(),
8887
))
89-
})?
90-
.clone(),
88+
})?,
9189
ms_bound: self.ms_bound,
9290
ms_r_sigma_factor: self.ms_r_sigma_factor,
9391
ms_input_variance: self.ms_input_variance,

0 commit comments

Comments
 (0)