Last active
October 20, 2019 19:16
-
-
Save gusdelact/40b12c25ae1ead2404c01539ddd3316f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
//En Rust, si hay una diferencia entre declarar una estructura | |
//que implementa los trait Copy y Clone | |
//este ejemplo usarlo sin quitar comentarios o poniendo comentarios | |
struct Estructura { | |
campo01 : u32, | |
campo02 : f64, | |
} | |
/*impl Copy for Estructura { } | |
impl Clone for Estructura { | |
fn clone(&self) -> Estructura { | |
*self | |
} | |
}*/ | |
fn fn00(par01: Estructura ) { | |
let numero = f64::from(par01.campo01) + par01.campo02; | |
} | |
fn fn01(par01: &Estructura ) { | |
let numero = par01.campo01 as f64 + par01.campo02; | |
} | |
fn main () { | |
let estruct = Estructura{campo01:5,campo02:31.14}; | |
let primero = estruct; | |
// let segundo = estruct; | |
//la estructura ya fue prestada a primero, esto no se puede hacer | |
//fn01(&estruct); | |
//para llamar a fn00, Estructura debe implantar el trato Copy y Clone | |
//fn00(primero); | |
//fn00(segundo); | |
//no se puede llamar a estructura sin prestar primero01 | |
//fn01(primero); | |
fn01(&primero); | |
// fn01(&segundo); | |
//println!("{:p},{:p},{:p}",&estruct,&primero,&segundo); | |
println!("{:p} {} {}",&primero, | |
std::mem::size_of::<Estructura>(),std::mem::size_of_val(&primero) ); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment