Function 将函数添加到预先存在的结构中
我想将我自己的函数添加到我无法控制的现有结构中。作为具体示例,我想创建Function 将函数添加到预先存在的结构中,function,file,struct,rust,Function,File,Struct,Rust,我想将我自己的函数添加到我无法控制的现有结构中。作为具体示例,我想创建std::fs::File 让logfile=std::fs::OpenOptions::new().create(true).open(“file.txt”).unwrap(); 然后我想以某种方式创建自己的函数fn foo(),以便以后能够执行logfile.foo() 老实说,我不确定这是否可行。这正是特质的作用所在。请参阅铁锈书中的“” 简言之,您可以定义自己的trait Foo并向其中添加fn Foo(&self)
std::fs::File
让logfile=std::fs::OpenOptions::new().create(true).open(“file.txt”).unwrap();
然后我想以某种方式创建自己的函数fn foo()
,以便以后能够执行logfile.foo()代码>
老实说,我不确定这是否可行。这正是特质的作用所在。请参阅铁锈书中的“”
简言之,您可以定义自己的trait Foo
并向其中添加fn Foo(&self)
方法,然后impl Foo for std::fs::File
,这允许您调用logfile.Foo()
trait Foo{
fn foo(和self);
}
文件的impl-Foo{
fn foo(和self){
println!(“foo”);
}
}
此外,您的手机缺少对或的呼叫。否则,您将收到一个错误
下面是一个完整的示例:
使用std::fs::{File,OpenOptions};
特色食品{
fn foo(和self);
}
文件的impl-Foo{
fn foo(和self){
println!(“foo”);
}
}
fn main(){
让logfile=OpenOptions::new()
.write(true)//或`.append(true)`
.create(true)
.open(“file.txt”)
.unwrap();
logfile.foo();
}
您的实例中是否有foo
所依赖的特殊信息,或者所有信息都已存在于文件中
实例中?如果所有信息都已经在文件
实例中,那么您可以简单地使用foo
方法创建一个trait,然后为文件
实现它。