@@ -277,27 +277,24 @@ pub struct SuperBlockNotification {
277277 pub consolidated_block_hashes : Vec < String > ,
278278}
279279
280- #[ derive( Clone , Copy , Debug , Default , Deserialize , Serialize ) ]
280+ #[ derive( Clone , Copy , Debug , Deserialize , Serialize ) ]
281281#[ serde( rename_all = "camelCase" ) ]
282282pub enum FeeType {
283- #[ default]
284283 Absolute ,
285284 Relative ,
286285}
287286
288- impl FeeType {
289- /// For the sake of backwards compatibility, turn a `Fee::Absolute` into `Fee::Relative` if the
290- /// `FeeType` is `Relative`, and a `Fee::Relative` into `Fee::Absolute` if the `FeeType` is
291- /// `Absolute`.
292- #[ allow( clippy:: cast_precision_loss) ]
293- pub fn fee_compat ( & self , fee : Fee ) -> Fee {
294- match ( self , fee) {
295- ( & FeeType :: Absolute , Fee :: Relative ( relative) ) => Fee :: from ( relative. into_absolute ( 1 ) ) ,
296- ( & FeeType :: Relative , Fee :: Absolute ( absolute) ) => {
297- Fee :: relative_from_float ( absolute. as_nanowits ( ) as f64 )
298- }
299- _ => fee,
287+ /// For the sake of backwards compatibility, turn a `Fee::Absolute` into `Fee::Relative` if the
288+ /// `FeeType` is `Relative`, and a `Fee::Relative` into `Fee::Absolute` if the `FeeType` is
289+ /// `Absolute`.
290+ #[ allow( clippy:: cast_precision_loss) ]
291+ pub fn fee_compat ( fee : Fee , fee_type : Option < FeeType > ) -> Fee {
292+ match ( fee, fee_type) {
293+ ( Fee :: Relative ( relative) , Some ( FeeType :: Absolute ) ) => Fee :: from ( relative. into_absolute ( 1 ) ) ,
294+ ( Fee :: Absolute ( absolute) , Some ( FeeType :: Relative ) ) => {
295+ Fee :: relative_from_float ( absolute. as_nanowits ( ) as f64 )
300296 }
297+ _ => fee,
301298 }
302299}
303300
@@ -738,16 +735,22 @@ mod tests {
738735
739736 #[ test]
740737 fn test_fee_type_backwards_compatibility ( ) {
741- let fee = FeeType :: Absolute . fee_compat ( Fee :: absolute_from_nanowits ( 123456 ) ) ;
738+ let fee = fee_compat ( Fee :: absolute_from_nanowits ( 123456 ) , None ) ;
739+ assert_eq ! ( fee, Fee :: absolute_from_nanowits( 123456 ) ) ;
740+
741+ let fee = fee_compat ( Fee :: relative_from_float ( 123.456 ) , None ) ;
742+ assert_eq ! ( fee, Fee :: relative_from_float( 123.456 ) ) ;
743+
744+ let fee = fee_compat ( Fee :: absolute_from_nanowits ( 123456 ) , Some ( FeeType :: Absolute ) ) ;
742745 assert_eq ! ( fee, Fee :: absolute_from_nanowits( 123456 ) ) ;
743746
744- let fee = FeeType :: Absolute . fee_compat ( Fee :: relative_from_float ( 123.456 ) ) ;
747+ let fee = fee_compat ( Fee :: relative_from_float ( 123.456 ) , Some ( FeeType :: Absolute ) ) ;
745748 assert_eq ! ( fee, Fee :: absolute_from_nanowits( 123 ) ) ;
746749
747- let fee = FeeType :: Relative . fee_compat ( Fee :: absolute_from_nanowits ( 123456 ) ) ;
750+ let fee = fee_compat ( Fee :: absolute_from_nanowits ( 123456 ) , Some ( FeeType :: Relative ) ) ;
748751 assert_eq ! ( fee, Fee :: relative_from_float( 123456.0 ) ) ;
749752
750- let fee = FeeType :: Relative . fee_compat ( Fee :: relative_from_float ( 123.456 ) ) ;
753+ let fee = fee_compat ( Fee :: relative_from_float ( 123.456 ) , Some ( FeeType :: Relative ) ) ;
751754 assert_eq ! ( fee, Fee :: relative_from_float( 123.456 ) ) ;
752755 }
753756}
0 commit comments