tipos de referencia diferencia Cierre mover y tipo de valor

En el uso de un cierre + mover después de que el valor de una variable de tipo todavía puede citarse, pero las variables de cadena no puede ser citado, lo que sugiere que ya "valor prestado aquí después de mover", desde aquí se puede extender a otros tipos de referencia debe ser el mismo que el trato estructura con una cuerda.
pub fn main () {
    dejar = ch 'Inglés';
    dejar CH2 = & ch;
    dejar que CH3 = & ch;
    println ( "{:}", (y CH, CH2, CH3))!;

    dejar CH = cadena de :: ( "英");
    dejar CH2 = & ch;
    dejar que CH3 = & ch;
    println ( "{:}", (y CH, CH2, CH3))!;

    dejó mut B = false;
    dejar que x = & mut b;    
    {
        dejar que mut C = || {* X = true; };
        // La siguiente línea es un error:
        // Sea y = y x;
        C();
        println ( "{} :?", x)!;
    }    
    Sea z = & x;
    // b = true;
    println ( "{} :?", z)!;

    dejar que la estera sea = 5;    
    dejar que add_num = || println ( "num Cierre: {} :?", num)!;
    add_num ();
    dejar que a = & num mut;
    println ( "num: {} :?", y num!);

    dejar que mut add_num = || {! Num + = 5; println ( "num Cierre: {} :?", y num);};
    add_num ();
    println ( "num: {} :?", y num!);
    dejar que a = & num mut;
    println ( "num: {} :?", a)!;

    dejar que mut add_num = mover || {! num + = 5; println ( "num Cierre: {} :?", y num);};
    add_num ();
    println ( "num: {} :?", y num!);
    dejar que a = & num mut;
    println ( "num: {} :?", a)!;


    dejar que mut num = cadena de :: ( "hola");    
    dejar que add_num = || println ( "num Cierre: {} :?", num)!;
    add_num ();
    dejar que a = & num mut;
    println ( "num: {} :?", y num!);

    dejar que mut add_num = || {! Num + = "5"; println ( "num Cierre: {} :?", y num);};
    add_num ();
    println ( "num: {} :?", y num!);
    dejar que a = & num mut;
    println ( "num: {} :?", a)!;

    
    dejar que mut add_num = mover || {! Num + = "5"; println ( "num Cierre: {} :?", y num);};
    add_num ();
    // dejar que a = & num mut; // ^^^^^^^^ valor prestado aquí después del movimiento
    ! // println ( "num: {} :?", a);   
}

 

Supongo que te gusta

Origin www.cnblogs.com/liufu627/p/12571881.html
Recomendado
Clasificación