Omega359 commented on issue #13631:
URL: https://github.com/apache/datafusion/issues/13631#issuecomment-2659449432

   I did a quick test using 
   
   cargo fix --edition and there are a lot of concerns with drop ordering and 
if let scoping:
   
   ```
   warning: `if let` assigns a shorter lifetime since Edition 2024
       --> datafusion/common/src/scalar/mod.rs:1861:28
        |
   1861 |                         if let ScalarValue::$SCALAR_TY(v) = sv {
        |                            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^--
        |                                                             |
        |                                                             this 
value has a significant drop implementation which may observe a major change in 
drop order and requires your discretion
   ...
   1937 |             DataType::Int32 => build_array_primitive!(Int32Array, 
Int32),
        |                                
----------------------------------------- in this macro invocation
        |
        = warning: this changes meaning in Rust 2024
        = note: for more information, see 
<https://doc.rust-lang.org/nightly/edition-guide/rust-2024/temporary-if-let-scope.html>
   ```
   
   ```
   warning: relative drop order changing in Rust 2024
       --> datafusion/expr/src/utils.rs:1144:32
        |
   1144 |         while let Some(expr) = stack.pop() {
        |                        ----    ^^^^^^^^^^^
        |                        |       |
        |                        |       this value will be stored in a 
temporary; let us call it `#2`
        |                        |       up until Edition 2021 `#2` is dropped 
last but will be dropped earlier in Edition 2024
        |                        `expr` calls a custom destructor
        |                        `expr` will be dropped later as of Edition 2024
   ...
   1147 |                     right,
        |                     -----
        |                     |
        |                     `right` calls a custom destructor
        |                     `right` will be dropped later as of Edition 2024
   1148 |                     op: Operator::And,
   1149 |                     left,
        |                     ----
        |                     |
        |                     `left` calls a custom destructor
        |                     `left` will be dropped later as of Edition 2024
   ...
   1154 |                 Expr::Alias(Alias { expr, .. }) => stack.push(*expr),
        |                                     ----
        |                                     |
        |                                     this value will be stored in a 
temporary; let us call it `#1`
        |                                     `#1` will be dropped later as of 
Edition 2024
   ...
   1157 |         }
        |         - now the temporary value is dropped here, before the local 
variables in the block or statement
   ```
   
   It's not going to be a quick migration. 2024 also required <= 1.85.0 so 
Datafusion couldn't use it until 1.89.0 is released according to the MSRV 
policy.
   


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: github-unsubscr...@datafusion.apache.org
For additional commands, e-mail: github-h...@datafusion.apache.org

Reply via email to