Menu
Coddy logo textTech

Tuple Structs

Parte da seção Logic & Flow do Journey de Rust da Coddy — lição 25 de 66.

Enquanto structs regulares usam campos nomeados, o Rust oferece outro tipo chamado tuple structs. Eles fornecem uma maneira mais concisa de criar tipos personalizados quando você não precisa nomear cada campo individualmente.

Uma struct de tupla combina os benefícios de criar um novo tipo com a simplicidade de uma tupla. Você a define usando a palavra-chave struct seguida pelo nome do tipo e os tipos dos campos entre parênteses:

struct Color(i32, i32, i32);

Isso cria um tipo Color que contém três valores i32, representando valores de cores RGB. Ao contrário de structs comuns, você não especifica nomes de campos - você acessa os valores por sua posição, assim como em tuplas.

Para criar uma instância de uma tuple struct, você fornece valores entre parênteses:

let red = Color(255, 0, 0);

Você pode acessar campos individuais usando a notação de ponto com o índice do campo: red.0 fornece o primeiro valor, red.1 o segundo, e assim por diante.

challenge icon

Desafio

Fácil

Você receberá três entradas: um valor de vermelho (como um número inteiro), um valor de verde (como um número inteiro) e um valor de azul (como um número inteiro). Defina uma tuple struct Color que contenha três valores i32 representando os componentes de cor RGB. Crie uma instância desta tuple struct usando os valores de entrada, depois acesse e imprima cada componente de cor usando a notação de índice.

Requisitos:

  • Defina uma tuple struct Color com três campos i32
  • Leia a primeira entrada e converta-a para i32 para o valor de vermelho
  • Leia a segunda entrada e converta-a para i32 para o valor de verde
  • Leia a terceira entrada e converta-a para i32 para o valor de azul
  • Crie uma instância da tuple struct Color com esses valores
  • Acesse cada campo usando a notação de ponto com índices (0, 1, 2) e imprima as informações de cor no formato exato mostrado abaixo

Entrada:

  • Primeira linha: Valor de vermelho como um número inteiro (ex: 255)
  • Segunda linha: Valor de verde como um número inteiro (ex: 128)
  • Terceira linha: Valor de azul como um número inteiro (ex: 0)

Saída:

  • Primeira linha: Red: [red_value]
  • Segunda linha: Green: [green_value]
  • Terceira linha: Blue: [blue_value]

Folha de consulta

Uma struct de tupla é uma struct sem campos nomeados. Ela combina os benefícios de criar um novo tipo com a simplicidade de uma tupla.

Defina uma struct de tupla usando a palavra-chave struct seguida pelo nome do tipo e os tipos dos campos entre parênteses:

struct Color(i32, i32, i32);

Crie uma instância fornecendo valores entre parênteses:

let red = Color(255, 0, 0);

Acesse os campos usando a notação de ponto com o índice do campo:

red.0  // primeiro valor
red.1  // segundo valor
red.2  // terceiro valor

Experimente você mesmo

use std::io;

// TODO: Defina sua struct de tupla Color aqui

fn main() {
    // Ler o valor de vermelho
    let mut red_input = String::new();
    io::stdin().read_line(&mut red_input).expect("Failed to read line");
    let red: i32 = red_input.trim().parse().expect("Invalid input");
    
    // Ler o valor de verde
    let mut green_input = String::new();
    io::stdin().read_line(&mut green_input).expect("Failed to read line");
    let green: i32 = green_input.trim().parse().expect("Invalid input");
    
    // Ler o valor de azul
    let mut blue_input = String::new();
    io::stdin().read_line(&mut blue_input).expect("Failed to read line");
    let blue: i32 = blue_input.trim().parse().expect("Invalid input");
    
    // TODO: Crie uma instância da struct de tupla Color usando os valores de entrada
    
    // TODO: Acesse e imprima cada componente de cor usando a notação de índice
    // Formato: Red: [value], Green: [value], Blue: [value]
}
quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Logic & Flow