Skip to content

Instantly share code, notes, and snippets.

@soaringkonoha
Created January 13, 2022 12:09
Show Gist options
  • Save soaringkonoha/1ed1d300f8cd53032680e9121417ad25 to your computer and use it in GitHub Desktop.
Save soaringkonoha/1ed1d300f8cd53032680e9121417ad25 to your computer and use it in GitHub Desktop.
ジェネリクスの基礎概要
// 具象型 A
struct A;
// A より先に <A> がない。
// また、A は具象型である。
// よって Single も具象型になる。
struct Single(A);
// T よりも先に <T> が使用されている。
// よって型パラメータ T はジェネリック型である。
struct SingleGen<T>(T);
fn main() {
// Single は具象型であり、
// A のみを受け取れる。
let _s = Single(A);
// 束縛できる型が明示的に指定されている。
// この変数はSingleGen の <char> のみ束縛できる。
let _char: SingleGen<char> = SingleGen('a');
// 変数が SingleGen 型なら、
// 型を指定しなくてもいい。
let _t = SingleGen(A); // A を使用
let _i32 = SingleGen(6); // i32 を使用
let _char = SingleGen('a'); // char を使用
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment