cannot move out of type! YEAH!
cannot move out of here! Are you fine!
さっぱり分からんので 説明もできん☆(^~^) いかがでしたか?
a
&a
*a
&*a
なんか いっぱいあるし、もちろん
&&a
とか重ねることもできる☆(^~^)
なんか突然 borrowed とかエラーが出てくる☆(^~^)
そんなときは、エラーが消えるまで
& を付けたり外したり、 * を付けたり外したり
する☆(^~^)
それでもダメなときは
ore.nannka_function(ore.value);
と書いているのを
let v = ore.value;
ore.nannka_function(v);
する☆(^~^)
それでもダメなときは
.unwrap() を付けたり外したり
する☆(^~^)それでもダメなときは
{ } で挟んだり、{ } の外に出したり
する☆(^~^)それでもダメなときは
a
b
と書いているのを
b
a
と並び替える☆(^~^) borrowed とかいうエラーが消えるまでやる☆(^~^)
意味☆? 知らん☆(^~^)
戦いは始まったばかり
if let Some(banana) = self.foods[0].fruits {
banana.change(); // I was happen!
} else {
panic!("No banana!")
}
ここでも何がダメ☆(^~^)!?
if let Some(ref mut banana) = self.foods[0].fruits {
banana.change(); // Ok?
} else {
panic!("No banana!")
}
ref
とか、 ref mut
を付けると乗り切れるときがある☆(^~^) 運☆(^~^)
だm
if let Some(ref banana) = self.foods[0].fruit {
banana.change();
if 499 < banana.len() {
// I was happen.
self.food[0].fruits = Some(Apple::new());
}
} else {
panic!("No banana!")
}
これでダメなら
let mut panch = false;
if let Some(ref banana) = self.foods[0].fruit {
banana.change();
if 499 < banana.len() {
panch = true; // Ok.
}
} else {
panic!("No banana!")
}
if panch {
self.food[0].fruits = Some(Apple::new()); // Ok?
}
フラグを使ってでも ニョロニョロ{}の外に出すんだ☆(^~^) 意味☆(^~^)?知らん☆(^~^)
何が起こったのか?
// fn kansu(&mut self) {
// このケースの ref mut は許されない。
if let Some(ref mut banana) = self.foods[0].fruit {
banana.change()
} else {
None
}
Oh, NO!
// fn kansu(&mut self) {
let zero_food = &mut self.foods[0];
// このケースの ref mut は許される。
if let Some(ref mut banana) = zero_food.fruit {
banana.change()
} else {
None
}
Oh, my god!
// fn kansu(&mut self) {
// このケースの ref mut は許される。
if let Some(ref mut banana) = &mut self.foods[0].fruit {
banana.change()
} else {
None
}
こんなとこに &mut
付けれるのか……☆(^~^)
さっぱり分からんの吉
Hey! cannot move out of indexed content!
pub fn get_banana(&self) -> Banana {
self.fruits[0] // I was happen!
}
使いやすいと思って配列を使っているのに、なんてやつだ。
pub fn get_banana_color(&self) -> Color {
self.fruits[0].color
}
用件を済ますラッパー・メソッドにしろということかだぜ☆(^~^)
もう無理の助
cannot move out of borrowed content! Go to hell!
pub fn to_banana(&self) -> Banana {
Banana {
sweet: self.sweet, // I was happen!
}
}
↑コピーもできないのか。
pub fn to_banana(&self) -> Banana {
Banana {
sweet: self.sweet.to_string(), // Ok!
}
}
↑むむう☆(^~^)
pub fn get_name(&self) -> String {
self.name // I was happen!
}
↑この一部の隙も無い完全無比に見えるコードの何がダメなのか☆(^~^)
pub fn get_name(&self) -> String {
self.name.to_string() // Ok!
}
↑……☆(^~^)
ぴゅーっ!
cannot move out of borrowed content! HAHAHA!
pub fn to_basket(&self) -> Basket {
let mut basket = Basket::new();
// この self は許されない☆(^~^)
for fruit in self.fruits {
basket.push(fruit);
}
basket
}
↑この簡素なコードの何がダメなのか☆(^~^)?
pub fn to_basket(&self) -> Basket {
let mut basket = Basket::new();
// Ok!
for fruit in &self.fruits {
basket.push(fruit);
}
basket
}
↑ !!!!!!!!!!!!!!!!☆(^~^)!!
太陽王
// fn kansu(&mut self) {
let banana = &self.food[0].fruit;
let sweety = self.food[0].juice.change(banana);
// cannot borrow `self.food` as mutable because it is also borrowed as immutable
self.food[0].drink = sweety;
↑びびよびよびびびびよ
let zero_food = &mut self.food[0];
let sweety = zero_food.juice.change(&zero_food.banana);
// Ok!
zero_food.drink = sweety;
↑ピカァ
ぶおーん
cannot borrow `*basket` as mutable more than once at a time
basket.shuffle();
let banana = &mut basket.food[0];
banana.change();
// I was happen!
basket.shuffle();
↑なぜ1回切りなのか☆(^~^) 2回 変えたいこともあるだろ☆
basket.shuffle();
{
let banana = &mut basket.food[0];
banana.change();
}
// Ok!
basket.shuffle();
↑……☆(^~^)?