diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 553bd03..638d4d1 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -11,17 +11,6 @@ -## チェックリスト - -- [] 作業中 (ドラフトPR) - ---- - -- [] サポートしているバージョンを明記した -- [] modlist.mdを更新した(モジュール追加時) -- [] [CONTRIBUTING.md](CONTRIBUTING.md) のルールに従っている -- [] ライセンス/著作権に問題がない - ## レビューで見てほしい点 diff --git a/.github/contributing.md b/.github/contributing.md index d293d81..cbde255 100644 --- a/.github/contributing.md +++ b/.github/contributing.md @@ -1,43 +1,5 @@ # Contributing Guide -## 記事編集 - -### 編集するにあたって - -rustdocsjpは編集者の独自の理解と解釈によって書かれる解説サイトです。「こちらのほうがわかりやすい」といった表現がありましたら、そちらのほうを記載してもらって構いません。ただし、必ず公式のドキュメントを参考にしてください。 - -また、rustdocsjpには様々な書き方のルールがあります。 これは統一したフォーマットにすることにより読みやすくすることが目的です。 コントリビュートが初めての方は、 [vecモジュール](../content/docs/vec/about.mdx) を参考にしてみてください。多くのルールはここにHTMLコメントとして記載されてあります。 vecモジュールにないことは、まずIssueを立てて相談しましょう。 ルールが決定したら管理者がvecモジュールにコメントを追加します。 - -現時点では、編集中であることを周りに示す目的で、編集中のページに関するドラフトプルリクエストを立てることとなっています。 これは、余計なコンフリクトを避け、互いの無駄な作業を避けるためです。 - -「はじめに」などの冒頭ページ以外、すなわち皆さんが書くリファレンスページでは、必ず「である」調で書いてください。 また、モジュールを一つ追加するごとに[modlist.mdx](../content/docs/modlist.mdx)を更新してくださるようお願いします。 - -また、PRする際にはPRテンプレートにあるチェックリストを参照してください。 - -PR自体は完成品である必要性はありません。ページの一部でも構いません。気づいた人が補完してくれるでしょう。 -ですので、気軽にどんどんPRしてください。 - -### 編集方法 - -記事編集自体にnpm、node.js、bunのインストールは不要です。 -content/docsに全ての記事がmdxで入っています。 -ファイル構造は実際のドキュメントの構造とリンクしています。 - -mdxを書く際は冒頭に以下のように書き始めてください。titleとdescriptionの記入は必須です。 - -```mdx ---- -title: rustrefjp -description: Rust標準ライブラリを日本語に翻訳する非公式プロジェクトです。 ---- - -## はじめに -``` - -本ドキュメントはフレームワークにFumadocsを採用しています。 -基本的にはMarkDownと書き方は同じですがFumadocsでは一部GFM(GitHub Flavored Markdown)本来の記法と異なる記法での記述が求められます。 -詳しくは[Fumadocs Docs](https://www.fumadocs.dev/docs/markdown)をご覧ください。 - ## デザイン編集 デザイン編集をする前にnpm、nodejs、bunをインストールしてください。 diff --git a/README.md b/README.md index 71c9971..5ab60c6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,7 @@ # rustrefjp - Rust言語非公式日本語ドキュメント -rustrefjp は、Rust 標準ライブラリおよび関連仕様について、公式ドキュメントの単純な翻訳ではなく、各ライターの理解と解釈に基づいて日本語で解説する非公式プロジェクトです。 +rustrefjp は、Rust 標準ライブラリおよび関連仕様について、AIによってリファレンスを翻訳していくプロジェクトです。 +AIによって作られた翻訳は、レビュアーが細心の注意を以て確認しています。 ## 貢献 diff --git a/content/docs/(Introduction)/index.mdx b/content/docs/(Introduction)/index.mdx new file mode 100644 index 0000000..4405305 --- /dev/null +++ b/content/docs/(Introduction)/index.mdx @@ -0,0 +1,18 @@ +--- +title: rustrefjp +description: Rust標準ライブラリの日本語リファレンスです。 +--- + +rustrefjpは、公式リファレンスをAIによって翻訳するプロジェクトです。 +AIによって翻訳されたページはレビュアーが細心の注意を以てチェックしています。 +正確性には最大限配慮していますが、内容の完全性・公式性を保証するものではありません。 +原典については必ず公式ドキュメントを参照してください。 + +## 方針 + +本サイトは常にRust言語の最新リファレンスを掲載し続けることを目標にしています。 +また、Rust言語の入門として使えるよう、わかりやすさも重視しております。 + +# ライセンス + +Rustの慣習に従い、明記されてない限りはMIT OR Apache License 2.0で管理されています。 diff --git a/content/docs/1.95.0/index.mdx b/content/docs/1.95.0/index.mdx deleted file mode 100644 index a76097d..0000000 --- a/content/docs/1.95.0/index.mdx +++ /dev/null @@ -1,97 +0,0 @@ ---- -title: rustrefjp -description: Rust標準ライブラリを日本語に翻訳する非公式プロジェクトです。 ---- - -rustrefjpは、Rust標準ライブラリおよび関連仕様について、公式ドキュメントの単純な翻訳ではなく、各ライターの理解と解釈に基づいて日本語で解説する非公式プロジェクトです。 - -正確性には最大限配慮していますが、内容の完全性・公式性を保証するものではありません。 -原典については必ず公式ドキュメントを参照してください。 - -## 方針 - -本サイトは常にRust言語の最新リファレンスを掲載し続けることを目標にしています。 -また、Rust言語の入門として使えるよう、わかりやすさも重視しております。 -基本的には公式ドキュメントを参考にしながら、編集者の独自の理解と解釈に基づいて解説を書きます。 - -## 本サイトを閲覧するにあたって - -本サイトはよりわかりやすくするために、コードブロックではフルパスを書くようにしています。 -ただし、以下の構造体・トレイトなどは除外されます。 - -- `std::marker::Copy` -- `std::marker::Copy` (deriveマクロ) -- `std::marker::Send` -- `std::marker::Sized` -- `std::marker::Sync` -- `std::marker::Unpin` -- `std::ops::Drop` -- `std::ops::Fn` -- `std::ops::FnMut` -- `std::ops::FnOnce` -- `std::ops::AsyncFn` -- `std::ops::AsyncFnMut` -- `std::ops::AsyncFnOnce` -- `std::mem::drop` -- `std::mem::align_of` -- `std::mem::align_of_val` -- `std::mem::size_of` -- `std::mem::size_of_val` -- `std::clone::Clone` -- `std::clone::Clone` (deriveマクロ) -- `std::cmp::Eq` -- `std::cmp::Eq` (deriveマクロ) -- `std::cmp::Ord` -- `std::cmp::Ord` (deriveマクロ) -- `std::cmp::PartialEq` -- `std::cmp::PartialEq` (deriveマクロ) -- `std::cmp::PartialOrd` -- `std::cmp::PartialOrd` (deriveマクロ) -- `std::convert::AsMut` -- `std::convert::AsRef` -- `std::convert::From` -- `std::convert::Into` -- `std::convert::TryFrom` -- `std::convert::TryInto` -- `std::default::Default` -- `std::default::Default` (deriveマクロ) -- `std::iter::DoubleEndedIterator` -- `std::iter::ExactSizeIterator` -- `std::iter::Extend` -- `std::iter::IntoIter` -- `std::iter::Iterator` -- `std::iter::FromIterator` -- `std::option::Option` -- `std::option::Option::None` -- `std::option::Option::Some` -- `std::result::Result` -- `std::result::Result::Err` -- `std::result::Result::Ok` -- `std::fmt::macros::Debug` (deriveマクロ) -- `std::hash::macros::Hash` (deriveマクロ) -- `std::assert` -- `std::cfg` -- `std::column` -- `std::compile_error` -- `std::concat` -- `std::env` -- `std::file` -- `std::format_args` -- `std::include` -- `std::include_bytes` -- `std::include_str` -- `std::line` -- `std::log_syntax` (nightlyのみ) -- `std::module_path` -- `std::option_env` -- `std::stringify` -- `std::trace_macros` (nightlyのみ) -- `std::concat_bytes` (nightlyのみ) -- `std::future::Future` -- `std::future::IntoFuture` - -フルを書かないパスは`std::prelude::rust_2024`に基づいています。 - -## ライセンス - -Rustの慣習に従い、明記されてない限りはMIT OR Apache License 2.0で管理されています。 diff --git a/content/docs/1.95.0/meta.json b/content/docs/1.95.0/meta.json deleted file mode 100644 index 2083066..0000000 --- a/content/docs/1.95.0/meta.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "title": "Rust 1.95.0", - "root": true, - "pages": ["---Introduction---", "index", "modlist", "---References---", "..."] -} \ No newline at end of file diff --git a/content/docs/1.95.0/vec/Drain.mdx b/content/docs/1.95.0/vec/Drain.mdx deleted file mode 100644 index 65e358e..0000000 --- a/content/docs/1.95.0/vec/Drain.mdx +++ /dev/null @@ -1,359 +0,0 @@ ---- -title: std::vec::Drain -description: 構造体 std::vec::Drain ---- - -{/* -内部的な実装を書く。内容は公式ドキュメントの写しでよい。 -ただし、rustdocsjpのすべてのコードブロックにおいて、使用する構造体やトレイトはstd::prelude::rust_2024に列挙されているもの以外、必ずフルパスで書く。 -*/} - -```rust -pub struct Drain<'a, T, A = std::alloc::Global> -where - T: 'a, - A: std::alloc::Allocator + 'a -{ /* private fields */ } -``` - -{/* -以降、 -解説、コード例、実装、トレイト実装、関連項目の順に記載 -*/} - -## 解説 - -{/* 詳細な解説を行う。公式ドキュメントおよびソースコードをよく読んでから書くこと */} -ベクター内の指定された区間を削除し、取り除かれた要素を与えるイテレータ。 -`Vec`の`drain`メソッドによって作成される。 - -## 例 - -{/* -コード例を書く。 -公式サイトのものをそのまま拝借しても構わないが、わかりやすいように必ず日本語のコメント文を挿入すること -*/} - -```rust -let mut v = vec![0, 1, 2, 3]; -let u = v.drain(1..).collect::>(); - -// 前から2番目以降の要素が削除されている -assert_eq!(v, &[0]); - -// 削除された要素が返されている -assert_eq!(u, &[1, 2, 3]); -``` - -## 実装 - -{/* -実装(implementation)を記入する。トレイトを使用した実装とは分離する。 -また、複数の実装がある場合はコードブロックを分離し、できるだけ一つの実装につき一つのコードブロックにする -*/} - -```rust -impl Drain<'_, T, A> -where - A: std::aloc::Allocator -{ /* private fields */ } -``` - -{/* nightlyでのみ使用できる場合はnightly-onlyというコメント文を挿入すること */} - -```rust -impl<'a, T, A> Drain<'a, T, A> -where - A: std::alloc::Allocator -{ - pub fn as_slice(&self) -> &[T]; - - // nightly-only - pub fn allocator(&self) -> &A; - - // nightly-only - pub fn keep_rest(self); -} -``` - -{/* -実装されている関数の説明。 -解説とコード例を必ず載せること。 -*/} - -### `as_slice` - -まだ削除されていない要素をスライスで返す関数。 - -```rust -let mut v = vec![0, 1, 2, 3]; -let mut drain = v.drain(..); - -// まだ何も消費していない -assert_eq!(drain.as_slice(), &[0, 1, 2, 3]); - -// 1個前に進める(1個消費する) -let _ = drain.next().unwrap(); - -// 1番目の要素が削除される -assert_eq!(drain.as_slice(), &[1, 2, 3]); -``` - -### `allocator` - -{/* -nightly-onlyの関数の場合は、解説内に - - -nightlyでのみ使用可能 - - -が必須である。 -*/} - - -nightlyでのみ使用可能 - - -内部で使用しているアロケーターを返す関数。 - -```rust -#![feature(allocator_api)] - -use std::any::{Any, TypeId}; - -let v = vec![0, 1, 2, 3]; -assert_eq!( - // allocatorは参照を返すためcloneする - v.allocator().clone().type_id(), - - // Vecのアロケーターはデフォルトでstd::alloc::Global - TypeId::of::() -); -``` - -### `keep_rest` - - -nightlyでのみ使用可能 - - -一度も消費していない要素をもとのベクターに返還する関数。 - -```rust -#![feature(drain_keep_rest)] - -let mut v = vec![0, 1, 2, 3]; -let mut drain = v.drain(..); - -// ひとつ前に進める(一つ消費する) -drain.next().unwrap(); - -// vに消費していない要素を返還する -drain.keep_rest(); -assert_eq!(v, [1, 2, 3]); -``` - -## トレイト実装 - -{/* -トレイトを使用した実装について記述する。一つのトレイトにつき一つの項目にすること。 -以下は例である。 - -## ??? (トレイトの名前、std::prelude::rust_2024に列挙されている場合はフルパスを省略する) - -```rust -(実装を記述) -``` - -*/} - -### `AsRef` - -```rust -impl<'a, T, A> AsRef<[T]> for Drain<'a, T, A> -where - A: std::alloc::Allocator -{ /* trait methods */ } -``` - -### `std::fmt::Debug` - -```rust -impl std::fmt::Debug for Drain<'_, T, A> -where - T: std::fmt::Debug, - A: std::alloc::Allocator, -{ /* trait methods */ } -``` - -### `DoubleEndedIterator` - -```rust -impl DoubleEndedIterator for Drain<'_, T, A> -where - A: std::alloc::Allocator -{ /* trait methods */ } -``` - -### `Drop` - -```rust -impl Drop for Drain<'_, T, A> -where - A: std::alloc::Allocator -{ /* trait methods */ } -``` - -### `ExactSizeIterator` - -```rust -impl ExactSizeIterator for Drain<'_, T, A> -where - A: std::alloc::Allocator -{ /* trait methods */ } -``` - -### `Iterator` - -```rust -impl Iterator for Drain<'_, T, A> -where - A: std::alloc::Allocator -{ /* trait methods */ } -``` - -### `std::iter::FusedIterator` - -```rust -impl std::iter::FusedIterator for Drain<'_, T, A> -where - A: std::alloc::Allocator -{ /* trait methods */ } -``` - -### `Send` - -```rust -impl Send for Drain<'_, T, A> -where - T: Send, - A: Send + std::alloc::Allocator -{ /* trait methods */ } -``` - -### `Sync` - -```rust -impl Sync for Drain<'_, T, A> -where - T: Sync, - A: Sync + std::alloc::Allocator -{ /* trait methods */ } -``` - -### `std::iter::TrustedLen` - -```rust -impl std::iter::TrustedLen for Drain<'_, T, A> -where - A: std::alloc::Allocator -{ /* trait methods */ } -``` - -## 自動トレイト実装 - -### `std::marker::Freeze` - -```rust -impl<'a, T, A> std::marker::Freeze for Drain<'a, T, A> { - /* trait methods */ -} -``` - -### `std::panic::RefUnwindSafe` - -```rust -impl<'a, T, A> std::panic::RefUnwindSafe for Drain<'a, T, A> -where - T: std::panic::RefUnwindSafe, - A: std::panic::RefUnwindSafe -{ /* trait methods */ } -``` - -### `Unpin` - -```rust -impl<'a, T, A> Unpin for Drain<'a, T, A> { - /* trait methods */ -} -``` - -### `std::panic::UnwindSafe` - -```rust -impl<'a, T, A> std::panic::UnwindSafe for Drain<'a, T, A> -where - T: std::panic::RefUnwindSafe, - A: std::panic::RefUnwindSafe -{ /* trait methods */ } -``` - -## ブランケット実装 - -```rust -impl Any for T -where - T: 'static + ?Sized -{ /* trait methods */ } -``` - -```rust -impl Borrow for T -where - T: ?Sized -{ /* trait methods */ } -``` - -```rust -impl BorrowMut for T -where - T: ?Sized -{ /* trait methods */ } -``` - -```rust -impl From for T { - /* trait methods */ -} -``` - -```rust -impl Into for T -where - U: From -{ /* trait methods */ } -``` - -```rust -impl IntoIterator for I -where - I: Iterator, -{ /* trait methods */ } -``` - -```rust -impl TryFrom for T -where - U: Into -{ /* trait methods */ } -``` - -```rust -impl TryInto for T -where - U: TryFrom -{ /* trait methods */ } -``` - -{/* 関連項目については、必要だと思ったら記載すること */} diff --git a/content/docs/1.95.0/vec/about.mdx b/content/docs/1.95.0/vec/about.mdx deleted file mode 100644 index 3c8761d..0000000 --- a/content/docs/1.95.0/vec/about.mdx +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: std::vec -description: モジュール std::vec ---- - -{/* -ここではモジュールページの書き方について説明する。 -構造体、列挙型などの子ページの書き方については、Drain.mdを参照すること。 -*/} - -{/* モジュールの簡単な説明。必須。 */} -可変長配列である`Vec`とそのイテレーター群を提供する。 - -{/* -提供されているAPIの一覧を表で書く。必ず名前とページをリンクすること。 -説明は簡単なものでよい。 -種類は構造体、列挙型、、トレイト、関数、型エイリアスのどれかである。 -該当しないものがある場合はIssueを立てること。 -*/} - -| 名前 | 説明 | 種類 | -| --- | --- | --- | -| [`Drain`](./Drain.mdx) | ベクター内の指定された区間を削除し、取り除かれた要素を与えるイテレータ | 構造体 | -| `IntoIter` | ベクター内の指定された区間の所有権を奪うイテレータ | 構造体 | -| `Splice` | ベクター内の指定された区間を与えられたイテレーターと入れ替え、元の要素を返すイテレータ | 構造体 | diff --git a/content/docs/meta.json b/content/docs/meta.json index 01506eb..7877371 100644 --- a/content/docs/meta.json +++ b/content/docs/meta.json @@ -1,3 +1,3 @@ -{ - "pages": ["1.95.0"] +{ + "pages": ["(Introduction)", "std"] } \ No newline at end of file diff --git a/content/docs/std/meta.json b/content/docs/std/meta.json new file mode 100644 index 0000000..00c1590 --- /dev/null +++ b/content/docs/std/meta.json @@ -0,0 +1,5 @@ +{ + "title": "Rust 1.96.0", + "root": true, + "pages": ["---Introduction---", "modlist", "---References---", "..."] +} \ No newline at end of file diff --git a/content/docs/1.95.0/modlist.mdx b/content/docs/std/modlist.mdx similarity index 96% rename from content/docs/1.95.0/modlist.mdx rename to content/docs/std/modlist.mdx index 7fa6f2c..0126fb6 100644 --- a/content/docs/1.95.0/modlist.mdx +++ b/content/docs/std/modlist.mdx @@ -1,14 +1,14 @@ ---- -title: モジュール一覧 -description: 現在掲載されているモジュールの一覧です。 ---- - -import { source } from "@/lib/source"; - -{source.getPages().filter((page) => /^.*\/.*\/about$/.test(page.url)).map((page) => { - const basePath = process.env.BASE_PATH; - const url = `${basePath ?? ""}${page.url}`; - return ( -
  • {page.data.title}
  • - ) -})} +--- +title: モジュール一覧 +description: 現在掲載されているモジュールの一覧です。 +--- + +import { source } from "@/lib/source"; + +{source.getPages().filter((page) => /^.*\/.*\/about$/.test(page.url)).map((page) => { + const basePath = process.env.BASE_PATH; + const url = `${basePath ?? ""}${page.url}`; + return ( +
  • {page.data.title}
  • + ) +})}