Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Rust 直接调用函数时可变引用的寿命足够长,但通过中间函数调用时可变引用的寿命不够长_Rust_Lifetime Scoping - Fatal编程技术网

Rust 直接调用函数时可变引用的寿命足够长,但通过中间函数调用时可变引用的寿命不够长

Rust 直接调用函数时可变引用的寿命足够长,但通过中间函数调用时可变引用的寿命不够长,rust,lifetime-scoping,Rust,Lifetime Scoping,对于以下防锈代码: fn facing_of_mut<'a>(domain: &'a mut Domain, entity: Entity) -> Option<&'a mut Direction> { component_of_mut(&mut domain, entity) } …我可以在单元测试中直接调用它,在编译过程中不会出现生命周期错误。只有当facing of mut调用它时,我才会收到错误。您正在引用域。域是参数的局部

对于以下防锈代码:

fn facing_of_mut<'a>(domain: &'a mut Domain, entity: Entity) -> Option<&'a mut Direction> {
    component_of_mut(&mut domain, entity)
}

…我可以在单元测试中直接调用它,在编译过程中不会出现生命周期错误。只有当facing of mut调用它时,我才会收到错误。

您正在引用域。域是参数的局部变量,并且已经是引用。域仅在函数调用期间持续,因此对该值的引用可以存在多长时间

若要修复此问题,请不要尝试引用引用:

type Domain = String;
type Entity = String;
type Direction = String;

pub fn component_of_mut<'a, C>(domain: &'a mut Domain, entity: Entity) -> Option<&'a mut C>
    where C: 'static
{
    unimplemented!()
}

fn facing_of_mut<'a>(domain: &'a mut Domain, entity: Entity) -> Option<&'a mut Direction> {
    component_of_mut(domain, entity)
}

fn main() {}
type Domain = String;
type Entity = String;
type Direction = String;

pub fn component_of_mut<'a, C>(domain: &'a mut Domain, entity: Entity) -> Option<&'a mut C>
    where C: 'static
{
    unimplemented!()
}

fn facing_of_mut<'a>(domain: &'a mut Domain, entity: Entity) -> Option<&'a mut Direction> {
    component_of_mut(domain, entity)
}

fn main() {}