关键词impl与方法代码实现

学习内容

  • 阐述关键词impl基本概念
  • 理解关键词impl实现代码的方式

篇目

  1. 关键词impl概念
  2. 实现功能关键词impl
  3. 实现功能关键词impl与函数代码实现
  4. 程序结构图与功能关键词impl
  5. 参考资料

关键词impl概念

  关键词impl是为类型实现结构类型或者其它一些类型的不同行为功能。这里仅仅说明了直接针对结构类型本身的不同行为实现方式。

image

实现功能关键词impl

  Rust语言规定:

  • Ⓓ 关键词impl始终是公开的,且不可增加修饰关键词pub
  • Ⓓ 关键词impl实现的函数和方法默认都是私有的,且可增加修饰关键词pub

  默认实例代码如下所示。尽管下面代码已实现了函数new(),但是该函数外部还是不可访问的。


# #![allow(unused_variables)]
#fn main() {
#struct Person {
#    name: String,
#    age: u32,
#}

impl Person {
    fn new(name: String, age: u32) -> Person {
        Person {
            name: name,
            age: age,
        }
    }
}
#}

实现功能关键词impl与函数代码实现

  通过下面的代码,可以学习到这些知识:

  • 使用关键词impl,实现结构类型StructType的实例化函数new()
  • 使用关键词pub,实现结构类型StructType的函数new()公开性;
  • 实例是一种类型的具体对象;
  • 借助于公开性函数new(),实现该结构类型的实例化方式;
  • 借助于结构类型属性的公开性,实现了实例调用结构类型的属性手法;
  • 使用宏方法assert_eq!,验证实例调用结果的正确性;
mod trait_exerci {
    pub struct StructType {
        pub data: u32,
    }

    impl StructType {
        pub fn new(data: u32) -> StructType {
            StructType { data: data }
        }
    }
}

// cargo run --example function_instance
fn main() {
    let instance = trait_exerci::StructType::new(0);
    println!("instance.data = {}", instance.data);

    let instance = trait_exerci::StructType{ data:0, };
    println!("instance.data = {}", instance.data);
}

程序结构图与功能关键词impl

image

参考资料