小编Pet*_*ete的帖子

为什么在包含闭包的选项中“一种类型比另一种更通用”?

我写了一些编译好的代码,然后我变成TOption<T>,现在我收到了这个错误:

error[E0308]: mismatched type...one type is more general than the other
Run Code Online (Sandbox Code Playgroud)

在构建最小案例时,我注意到如果我更改data: &strdata: String代码再次编译正常。

游乐场链接

pub trait Subscriber {
    fn recv(&mut self, data: &str);
}

pub struct Task<T>(pub Option<T>)
where
    T: Fn(&str);

impl<T> Subscriber for Task<T>
where
    T: Fn(&str),
{
    fn recv(&mut self, data: &str) {
        self.0.take().unwrap()(data)
    }
}

fn main() {
    Task(Some(|_| ()));
}
Run Code Online (Sandbox Code Playgroud)

有人可以帮助我了解这里发生了什么吗?

rust

14
推荐指数
1
解决办法
1915
查看次数

Ansible 块:在“rescue”块中重新引发错误

rescue我是 Ansible 的新手,所以我可能会错误地处理这个问题,但我正在尝试找到一种方法,在错误被块删除后重新引发错误。

这样做的目的是能够在终止 playbook 之前将失败的任务记录到 API。我会使用该always部分,但随后ansible_failed_taskansible_failed_result变量不会被填充。

我相当确信我的方法是错误的,那么经验丰富的 Ansible 开发人员将如何处理这个问题?谢谢!

error-handling ansible

7
推荐指数
1
解决办法
4081
查看次数

makefile 将命令分配给

我可能很愚蠢,但我无法在我的 Makefile 中进行最基本的变量分配。

TEST = $(pwd);

all:
    echo $(TEST)
Run Code Online (Sandbox Code Playgroud)

当我在 FreeBSD (v9.1) 中从 Bash (v4.2.42) 运行“make all”时,我得到:

echo
Run Code Online (Sandbox Code Playgroud)

不知道我搞砸了什么。我还尝试使用 $(shell ...) 分配变量,结果相同。

如果我使用反引号(`),则基本赋值可以工作,但它不存储结果,而是存储命令。这在下面的示例 Makefile 中中断:

SERVERIP = `ifconfig em0 | grep -E 'inet.[0-9]' | awk '{ print $$2}'`

all:
    echo $(SERVERIP)
    sed -e 's/%LISTENIP%/${SERVERIP}/g' test.conf > work/test.conf.tmp
Run Code Online (Sandbox Code Playgroud)

结果是:

[pete@pete] ~/make
echo `ifconfig em0 | grep -E 'inet.[0-9]' | awk '{ print $2}'`
10.128.28.151
sed -e 's/%LISTENIP%/`ifconfig em0 | grep -E 'inet.[0-9]' | awk '{ print $2}'`/g' test.conf > work/test.conf.tmp
sed: …
Run Code Online (Sandbox Code Playgroud)

freebsd makefile

3
推荐指数
1
解决办法
2370
查看次数

标签 统计

ansible ×1

error-handling ×1

freebsd ×1

makefile ×1

rust ×1