- Borrow<Borrowed>トレイト - Borrowed型を借用できることを表す
- ToOwnedトレイト - Borrow<Borrowed>型を実装すると自動実装される
use std::borrow::Borrow;
#[derive(Debug)]
struct ToolBox(Tool);
#[derive(Debug)]
struct Tool;
impl Borrow<Tool> for ToolBox {
fn borrow(&self) -> &Tool {
&self.0
}
}
let tool_box = ToolBox(Tool);
let tool = tool_box.borrow() as &Tool;
// ToOwnedが自動導出される
let tool_box = tool.to_owned();
dbg!(tool_box);
代表的なBorrow<Borrowed>型
- String = Borrow<str>
- Vec<T> = Borrow<[T]>
- Box<T> = Borrow<T>
- PathBuf = Borrow<Path>
関連
yossan.hatenablog.com