rust-by-practice/en/src/ownership/ownership.md

74 lines
1.1 KiB
Markdown
Raw Normal View History

# Ownership
2022-02-25 03:34:45 -06:00
🌟🌟
```rust,editable
fn main() {
// modify this line only! use as many approaches as you can
let x = String::from("hello, world");
let y = x;
println!("{},{}",x,y);
}
```
🌟🌟
```rust,editable
// Don't modify code in main!
fn main() {
let s1 = String::from("hello, world");
let s2 = take_ownership(s1);
println!("{}", s2);
}
// Only modify the code below!
fn take_ownership(s: String) {
println!("{}", s);
}
```
🌟🌟
```rust,editable
fn main() {
let s = give_ownership();
println!("{}", s);
}
// Only modify the code below!
fn give_ownership() -> String {
let s = String::from("hello, world");
// convert String to Vec
let _s = s.into_bytes();
s
}
```
🌟🌟
```rust,editable
// use clone to fix it
fn main() {
let s = String::from("hello, world");
print_str(s);
println!("{}", s);
}
fn print_str(s: String) {
println!("{}",s)
}
```
🌟🌟
```rust, editable
// don't use clone ,use copy instead
fn main() {
let x = (1, 2, (), "hello");
let y = x.clone();
println!("{:?}, {:?}", x, y);
}
```