首页 > 编程语言 >rust程序设计(5)结构体相关练习题| 附带解答

rust程序设计(5)结构体相关练习题| 附带解答

时间:2023-11-18 18:11:59浏览次数:37  
标签:练习题 name person 附带 age 练习 Person rust 结构

题目

  1. 基础结构体练习

    • 创建一个名为Person的结构体,包含name(字符串类型)和age(整数类型)两个字段。
    • 写一个函数,接收一个Person实例作为参数,并打印出这个人的名字和年龄。
  2. 结构体方法练习

    • Person结构体添加一个方法birthday,当调用时,它将这个人的年龄增加1。
    • 创建一个Person实例,并使用birthday方法为其庆生,然后打印出新的年龄。
  3. 结构体关联函数练习

    • Person结构体添加一个关联函数(即静态方法)new,它接收名字和年龄,并返回一个Person实例。
    • 使用Person::new来创建一个新的Person实例。
  4. 带有枚举的结构体练习

    • 创建一个名为Vehicle的结构体,其中包含一个model(字符串类型)和一个名为vehicle_type的枚举(枚举值可以是Car, Truck, Motorcycle等)。
    • 实现一个显示Vehicle信息的函数,包括它的型号和类型。
  5. 结构体更新语法练习

    • 创建两个Person实例。
    • 使用结构体更新语法,创建一个新的Person实例,它从第一个实例继承名字,从第二个实例继承年龄。
  6. 元组结构体练习

    • 创建一个名为Color的元组结构体,它有三个u8类型的字段,代表红、绿、蓝色值。
    • 创建一个Color实例,并打印出其各个颜色分量。

解答

  1. 基础结构体练习

    struct Person {
        name: String,
        age: u32,
    }
    
    fn print_person(person: &Person) {
        println!("Name: {}, Age: {}", person.name, person.age);
    }
    
  2. 结构体方法练习

    impl Person {
        fn birthday(&mut self) {
            self.age += 1;
        }
    }
    
    // 使用示例
    // let mut person = Person { name: String::from("Alice"), age: 30 };
    // person.birthday();
    // println!("New age: {}", person.age);
    
  3. 结构体关联函数练习

    impl Person {
        fn new(name: String, age: u32) -> Person {
            Person { name, age }
        }
    }
    
    // 使用示例
    // let person = Person::new(String::from("Bob"), 40);
    
  4. 带有枚举的结构体练习

    enum VehicleType {
        Car,
        Truck,
        Motorcycle,
    }
    
    struct Vehicle {
        model: String,
        vehicle_type: VehicleType,
    }
    
    fn print_vehicle_info(vehicle: &Vehicle) {
        let type_str = match vehicle.vehicle_type {
            VehicleType::Car => "Car",
            VehicleType::Truck => "Truck",
            VehicleType::Motorcycle => "Motorcycle",
        };
        println!("Model: {}, Type: {}", vehicle.model, type_str);
    }
    
  5. 结构体更新语法练习

    // let person1 = Person { name: String::from("Chris"), age: 25 };
    // let person2 = Person { name: String::from("Pat"), age: 30 };
    // let person3 = Person {
    //     name: person1.name,
    //     ..person2
    // };
    
  6. 元组结构体练习

    struct Color(u8, u8, u8);
    
    // 使用示例
    // let color = Color(255, 0, 0);
    // println!("Red: {}, Green: {}, Blue: {}", color.0, color.1, color.2);
    

标签:练习题,name,person,附带,age,练习,Person,rust,结构
From: https://www.cnblogs.com/azoux/p/17840816.html

相关文章

  • 28_rust_无畏并发
    无畏并发Concurrent:程序不同部分之间独立执行;Parallel:程序不同部分同时运行。rust无畏并发:允许编写没有细微Bug的代码。并在不引入新Bug的情况下易于重构。这里所说的“并发”泛指concurrent和parallel。使用线程同时运行代码1:1模型:实现线程的方式:通过调用OS的API创建线程。......
  • rust程序设计(4)关于 trait | impl 相关的概念和疑问
    trait是什么?Rust中的trait是一种定义可被多种类型实现的共享行为的方式。它类似于Java或C#中的接口。通过trait,你可以定义一组方法签名(有时包括默认实现),不同的类型可以实现这些方法。这有助于抽象通用功能并确保不同类型间一定程度的一致性。当一个类型实现了一个trait,它承诺提......
  • Windows rustup update 速度慢,使用字节跳动Rust镜像加速
    不设置镜像加速rustup更新升级会非常慢RsProxy字节跳动的Rust镜像 Windows想要使用这个镜像需要按照官方提示去设置两个系统变量分别为 RUSTUP_DIST_SERVER RUSTUP_UPDATE_ROOT 之后来到当前用户文件夹下修改cargo的配置文件(没有就创建一个)C:\Users\你PC名\.c......
  • @各大高校|亚洲诚信TrustAsia接入CARSI,四大福利活动重磅来袭!
    亚洲诚信TrustAsiaEduPKI在CARSI平台正式上线,为广大CARSI成员校师生提供SSL证书和专业的技术服务支持,守卫高校安全!伴随着人工智能、大数据、物联网等新一代数字化技术的迅猛发展,教育信息化2.0和智慧校园建设得到快速推进。但与此同时,勒索软件、钓鱼邮件等网络安全威胁层出不穷,这对......
  • esp32笔记[10]-rust驱动ssd1306显示屏
    摘要使用rust(no-std)环境和esp-hal库实现SSD1306显示屏(128x64)显示bmp图片.平台信息esp32(模组:ESP32-WROOM-32D)(xtensalx6)(xtensa-esp32-none-elf)rust超链接esp32笔记[7]-使用rust+zig开发入门原理简介rust的include_bytes!宏Rust的include_bytes!宏可以用......
  • nginx-rust 基于rust 开发nginx 模块
    nginx-rust是nginx官方出的可以让我们基于rust开发nginx模块,目前还处于早期阶段,对于nginx类型的生成官方基于了bindgen工具这个工具我以前也简单介绍过,定于header包装如下图 说明目前来说官方提供的集成还是比较全的,同时对于标准nginx模块开发需要的数据类型也提供了......
  • 使用Docker部署Rust web应用
    Rust是一种非常快速和安全的系统编程语言,Rust因其web框架的速度而备受关注。在这篇文章中,我们将看到如何使用docker部署Rustweb应用程序。创建项目使用cargo创建一个新项目:cargonew--binrust-docker-project在Cargo.toml文件中添加依赖项:[dependencies]axum="0.6.6"tokio=......
  • rust程序设计(3)结构体相关概念和疑问
    结构体//如何定义结构体structUser{active:bool,username:String,email:String,sign_in_count:u64,}//如何使用结构体letuser=User{ active:true,username:String::from("someusername123"),email:String::from("someone@exampl......
  • rustbook-ch1-入门指南-总结
    rustbook-ch1-入门指南-总结一、rust版本管理1、安装rust之前需要安装一个C语言编译器。正常编译、执行rust程序,需要一个链接器。由于C语言编译器通常都会附带链接器,所以需要安装一个C语言编译器。除了编译执行需要链接器外,一部分常用的Rust包会依赖使用C语言编写的代码,为了编......
  • Rust语言做数据抓取代码示例
    这个任务需要使用到Rust语言和网络爬虫相关的库,以下是一个简单的示例代码。请注意,由于涉及到的具体问题和数据的复杂性,这个示例可能并不能直接满足你的需求,需要根据你的具体情况进行修改和扩展。usereqwest;useserde::{Deserialize,Serialize};useserde_json::{json,Value};......