- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在检查代码中的 Clippy 结果,发现 the pedantic rule needless_pass_by_value
可能是误报。
它说:
warning: this argument is passed by value, but not consumed in the function body
help: consider taking a reference instead:
&Arc<Mutex<MyStruct>>
自从克隆 Arc
只是引用计数,移动Arc
不应该是个坏主意。发送引用而不是 Arc
的值在质量和性能方面真的有什么不同吗? ?
#![warn(clippy::pedantic)]
use std::sync::{Arc, Mutex};
fn main() {
let my_struct = MyStruct { value: 3 };
let arc = Arc::new(Mutex::new(my_struct));
arc_taker(arc.clone());
}
fn arc_taker(prm: Arc<Mutex<MyStruct>>) {
prm.lock().unwrap().do_something();
}
struct MyStruct {
value: i32,
}
impl MyStruct {
fn do_something(&self) {
println!("self.value: {}", self.value);
}
}
最佳答案
调用 arc_taker(arc.clone())
增加引用计数,并从 arc_taker
返回再次递减它。在这种情况下这是无用的,因为 arc
main
的变量已经保留了 Arc
整个通话过程中都活着。对它的引用就足够了。无需上下颠簸引用计数。
在您的具体示例中,arc_taker
甚至不关心它是由 Arc
管理的.它只关心有一个 Mutex
至 lock
,所以为了让你的功能限制更少,只需要一个 &Mutex<MyStruct>
相反。
如果你想做任何Arc
-特定的东西,比如得到 weak_count
或其他东西,采取 &Arc<..>
会有意义。如果您的函数会保留 Arc 的克隆,那么只有采用 Arc
才有意义。按值,因为调用者可以决定通过调用 .clone()
给你一个额外的引用(从而增加引用计数),或者给你自己的所有权 Arc
(因此不会影响引用计数)。
关于rust - 为什么 Clippy 建议传递 Arc 作为引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55576425/
在 Cargo 项目中,我可以轻松运行 clippy在我的 src 代码上使用这个命令: rustup run nightly cargo clippy 但是,如果我使用 build script ,
我决定使用一些更高级的clippy版本来使自己为版本更改做好准备。我期待一些误报,但我不确定这一点。我得到以下结构,并且clippy告诉我每个函数都应该是const。 (clippy::missing
所以我有这个特性和一个实现它的结构: trait Trait { fn foo(&self) -> u64; } /// No Copy trait supported because it'
我是第一次尝试运行 clippy(我知道..我现在真的应该这样做了,嗯?)但我遇到了一些错误。 我尝试检查的项目依赖于 Piston,它可以成功编译和运行。但是,当我运行 clippy as desc
我一直在研究 Clippy而且我在不自己编译的情况下配置它时遇到问题。 我在 Github 上注意到他们使用 Clippy 作为 repo 网址,但是当您将鼠标悬停在它上面时,它不会显示标准的“复制到
我有一个有很多 crate 的工作区。我只想运行 cargo clippy 中的一个,而不是它的任何依赖项。 我该如何实现? 最佳答案 根据您提到的工作区,我假设 cargo clippy --pac
我正在使用Clippy.JS,这是一个有趣的小型Javascript库,可以复活微软的助手。 假设我想召唤巫师梅林: clippy.load('Merlin', function(agent){
我找到了一个名为 Clippy.js 的精巧的小型 JS 库使您可以在浏览器中实现 Microsoft Word 的旧虚拟助手。玩了一会儿后,我意识到文本气球有一个 setTimeout() 方法和一
关闭。这个问题是opinion-based .它目前不接受答案。 想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它. 2年前关闭。 Improve this
是否可以运行带有选项的 cargo clippy 以便自动修复警告? 从帮助消息来看,目前似乎不支持此选项。 最佳答案 截至 2021 年 6 月,自动修复功能已经稳定,您可以使用以下命令应用更改 c
我正在检查代码中的 Clippy 结果,发现 the pedantic rule needless_pass_by_value 可能是误报。 它说: warning: this argument is
这个问题在这里已经有了答案: How to quiet a warning for a single statement in Rust? (2 个答案) 关闭 3 年前。 我得到一些像这样的 Cl
我从这里按照说明安装带有 ruby on rails 的 clippy https://github.com/mojombo/clippy我将 swf 文件和所有 Assets 都放在公共(pub
我正在使用 prost 为 protobuf 生成 Rust 类。我希望 Clippy 忽略这些生成的文件,但我无法弄清楚如何让 Clippy 忽略它们。 在我的 lib.rs 文件中,我有 pub
我正在尝试使用 CI 构建和测试我的 Rust 代码,我想知道 cargo clippy(可能带有选项)是否涵盖了 cargo check 的所有内容做。我只需要运行 cargo clippy,还是需
我有一个嵌入代码,用户将使用它在自己的网站上显示我的网站上托管的内容(例如 )。 我想使用clippy允许他们将嵌入代码复制到剪贴板,但在 Firefox 中,这会导致 iframe 实际上嵌入到页
仅使用clippy-jquery并想要隐藏主 swf 对象,但使用另一个常规按钮激活该功能。它有一个功能可以通过发送到剪贴板来更新文本,所以我猜一定有一个功能可以模拟“点击”事件? 最佳答案 最后我使
当运行 cargo clippy 时,它会提示这样的代码: pub fn from_bytes(data: [u8; 72]) -> Stuff { let mut ts = [0u8; 8]
我是一名优秀的程序员,十分优秀!