Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Function 将函数添加到预先存在的结构中_Function_File_Struct_Rust - Fatal编程技术网

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,然后为
文件
实现它。