gpt4 book ai didi

rust - 错误警告 "value assigned is never read"

转载 作者:行者123 更新时间:2023-11-29 08:36:40 32 4
gpt4 key购买 nike

我收到这个警告:

 Compiling substrate-transaction-graph v2.0.0 (/home/niko/sub/substrate/core/transaction-pool/graph)
warning: value assigned to `altered_priority` is never read
--> core/transaction-pool/graph/src/pool.rs:137:15
|
137 | let mut altered_priority=priority;
| ^^^^^^^^^^^^^^^^
|
= note: #[warn(unused_assignments)] on by default
= help: maybe it is overwritten before being read?

关于这段代码的编译:

match self.api.validate_transaction(at, xt.clone())? {
TransactionValidity::Valid { priority, requires, provides, longevity } => {
info!(target: "txpool","priority before alteration: priority={:?}",priority);
let mut altered_priority=priority;
altered_priority=1;
Ok(base::Transaction {
data: xt,
bytes,
hash,
priority: altered_priority,
requires,
provides,
valid_till: block_number.as_().saturating_add(longevity),
})
},
TransactionValidity::Invalid(e) => {
bail!(error::Error::from(error::ErrorKind::InvalidTransaction(e)))
},
TransactionValidity::Unknown(e) => {
self.listener.write().invalid(&hash);
bail!(error::Error::from(error::ErrorKind::UnknownTransactionValidity(e)))
},
}

我已经添加了 log 消息,并且在转储变量之后我可以确认它们具有它们应该具有的值(在代码执行之后),即 priority Transaction 结构中的字段确实发生了变化:

2019-05-13 21:41:17 priority before alteration: priority=107
2019-05-13 21:41:17 Map TX begins
2019-05-13 21:41:17 TX IS OK: Transaction { hash: 0x79832c9790aee4b199a046cce27e46bb7e941f38e41d25629c922c318cf7c3a2, priority: 1, valid_till: 18446744073709551615, bytes: 107, requires: [], provides: [d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d0200000000000000], data: 81ffd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27df063b12602c33fa92df4895ab3ecd9f2ad72544bd4b55f1c6c91c8c107dba3654fd13ca5e81612a7fe011414ca604e8f99feb1ed35ce471361ee2c14defdc503080003000ca10f}
2019-05-13 21:41:17 TX priority: 1
2019-05-13 21:41:17 Ok(Transaction { hash: 0x79832c9790aee4b199a046cce27e46bb7e941f38e41d25629c922c318cf7c3a2, priority: 1, valid_till: 18446744073709551615, bytes: 107, requires: [], provides: [d43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27d0200000000000000], data: 81ffd43593c715fdd31c61141abd04a99fd6822c8558854ccde39a5684e7a56da27df063b12602c33fa92df4895ab3ecd9f2ad72544bd4b55f1c6c91c8c107dba3654fd13ca5e81612a7fe011414ca604e8f99feb1ed35ce471361ee2c14defdc503080003000ca10f})
2019-05-13 21:41:17 Map TX ends

实际上,即使不转储值,从代码本身也可以明显看出该值用于创建结构 Transaction。那么,这是 Rust 中的错误吗?

最佳答案

您写了 let mut altered_priority = priority;,紧接着是 altered_priority = 1;。编译器警告您,您在这两个语句的第一个语句中分配给 altered_priority 的初始值 priority 永远不会被读取。这是正确的:从 altered_priority 变量中读取的唯一值是 1,而不是 priority

没有理由写一个值然后立即无条件地用另一个值替换它。您可以简单地用 let altered_priority = 1; 替换这两个语句。 (或者您可以去掉该变量并编写 priority: 1 而不是下面的 priority: altered_priority。)

关于rust - 错误警告 "value assigned is never read",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56122374/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com