文字列への変換と文字列からの変換

RustRustBeginner
今すぐ練習

This tutorial is from open-source community. Access the source code

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、Rust で文字列への変換と文字列からの変換について学びます。任意の型を文字列に変換するには、その型に対して ToString トレイトを実装します。あるいは、fmt::Display トレイトを実装することもできます。このトレイトは自動的に ToString トレイトを提供し、println! を使って型を表示することができます。一方、文字列を特定の型(たとえば数値)に解析するには、型推論を伴って parse 関数を使うか、'turbofish' 構文を使って型を指定することができます。これは、標準ライブラリの多くの型に対して実装されている FromStr トレイトに依存しています。ユーザー定義型に文字列を解析したい場合は、その型に対して FromStr トレイトを実装することができます。

注: 実験でファイル名が指定されていない場合は、好きなファイル名を使うことができます。たとえば、main.rs を使って、rustc main.rs &&./main でコンパイルして実行することができます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/DataStructuresandEnumsGroup(["Data Structures and Enums"]) rust(("Rust")) -.-> rust/AdvancedTopicsGroup(["Advanced Topics"]) rust(("Rust")) -.-> rust/BasicConceptsGroup(["Basic Concepts"]) rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust/BasicConceptsGroup -.-> rust/variable_declarations("Variable Declarations") rust/DataTypesGroup -.-> rust/integer_types("Integer Types") rust/DataTypesGroup -.-> rust/string_type("String Type") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/DataStructuresandEnumsGroup -.-> rust/method_syntax("Method Syntax") rust/AdvancedTopicsGroup -.-> rust/traits("Traits") subgraph Lab Skills rust/variable_declarations -.-> lab-99301{{"文字列への変換と文字列からの変換"}} rust/integer_types -.-> lab-99301{{"文字列への変換と文字列からの変換"}} rust/string_type -.-> lab-99301{{"文字列への変換と文字列からの変換"}} rust/function_syntax -.-> lab-99301{{"文字列への変換と文字列からの変換"}} rust/expressions_statements -.-> lab-99301{{"文字列への変換と文字列からの変換"}} rust/method_syntax -.-> lab-99301{{"文字列への変換と文字列からの変換"}} rust/traits -.-> lab-99301{{"文字列への変換と文字列からの変換"}} end

文字列への変換と文字列からの変換

文字列への変換

任意の型を String に変換するには、その型に対して [ToString] トレイトを実装するだけです。直接そうする代わりに、fmt::Display トレイトを実装する方が良いでしょう。これは自動的に [ToString] を提供し、print! に関するセクションで説明したように、型を表示することも可能にします。

use std::fmt;

struct Circle {
    radius: i32
}

impl fmt::Display for Circle {
    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
        write!(f, "Circle of radius {}", self.radius)
    }
}

fn main() {
    let circle = Circle { radius: 6 };
    println!("{}", circle.to_string());
}

文字列の解析

文字列から数値に変換することは、より一般的なタスクの一つです。これに対する慣用的なアプローチは、 [parse] 関数を使って、型推論を行うか、'turbofish' 構文を使って解析する型を指定することです。両方の方法を以下の例に示します。

これは、その型に対して [FromStr] トレイトが実装されている限り、文字列を指定された型に変換します。これは標準ライブラリ内の多数の型に対して実装されています。ユーザー定義型でこの機能を得るには、その型に対して単に [FromStr] トレイトを実装します。

fn main() {
    let parsed: i32 = "5".parse().unwrap();
    let turbo_parsed = "10".parse::<i32>().unwrap();

    let sum = parsed + turbo_parsed;
    println!("Sum: {:?}", sum);
}

まとめ

おめでとうございます!文字列への変換と文字列からの変換の実験を完了しました。あなたの技術を向上させるために、LabExでさらに多くの実験を行って練習してください。