便利メソッドのちのちトレイト実装で使うため、やはり便利メソッドも実装しておく。&AsciiStrを得る。使っている点だけである。このような「独自型と別の型の間で直接変換が難しい場合、内部の型を経由して多段階で変換を行う」という工夫は、以後のトレイト実装でも必要になる場面がある。TryFrom説明するまでもないが、値の作成や変換に用いるトレイトである。しているものと考えてほしい。両方に対応できるのである。実装することができない。実装が競合するからである。実装が存在できないということになる。トレイトを使う方が望ましい。絡みの部分で、主に多相型を使っている場合などに発生する一部の状況のみである。実装を試みるのでも遅くはない。相当のものから実装していこう。多いが、残念ながら明示する必要があるので諦めて書こう。独自スライス型の内部の型からの作成もあとで使いたくなることがあるため、実装しておくのがよい。変換も実装しておくと便利かもしれないが、そこはお好みである。なって実装が追加された。多いが、残念ながら明示する必要があるので諦めて書こう。用の実装はほぼ同じなので省略。型パラメータがない場合、かなり単純。思ったほど一般的にできない。実装されている型の組に対して自動的に実装される。根本的には「知らないところで第三者が定義するかもしれない型に対して余計なことをしすぎるな」という話なので、諦めて既知のめぼしい型に対して手作業で実装していこう。}}ダルいが仕方ないここで注意すべきなのは、検査の前にアロケーションを発生させるべきでないという点である。作成のためのメモリアロケーションは全くの無駄となってしまう。経由しない方法もあり、たとえば以下のように実装することもできる。}}検証と値の作成を別々に行う。経由する方がシンプルで良いと思うが、まあ好みの問題だろう。型の値を作成する実装ができたので、次は逆向き、内側の値を取り出す実装である。これは失敗しないので簡単だ。}}追加の制約付きの型コードを載せる価値があるか疑問さえ湧いてくるつまらなさである。ような中身を露出する実装がないことに注意。関数なので、書いている途中でおかしいと気付くはずである。スマートポインタとの変換これが絶妙に非自明なので詳しく解説する。先にスライスからスマートポインタへの変換を考える。型変換することで値を作る。作ることを目標にする。確保されたメモリ領域にコピーされる。してやる必要があるのである。再構築してやらないとメモリリークとなる。Box<MyStr>。要求されていることに注意せよ。して妥当である」という条件。ように追加の制約があっても問題ない。自分自身そのものの型であり、受け取って以降に値の加工は行っていないから、この不変条件は自明に満たされる。安全に作るための条件である。渡しても安全であるということである。確保する領域のそれも互換である。渡すことができるというわけである。指定していないが、これをユーザが真似してはいけないということである。指定がない理由が述べられている。あるという性質自体はライブラリとして保証したくないため、現時点ではコンパイラ実装の詳細に依存しておくとのことである。型だけ特別扱いすることができるからこそ許されている。内部においては、ユーザが通常手に入れられるよりも多くの保証が特別に与えられているのである。コードをそのまま自分のクレートにコピペすると、最悪の場合安全性の保証が足りず未定義動作や脆弱性を引き起こすことになる。使われていた方法だからといって信用するのではなく、安全である根拠をきちんと考える必要がある。変換はこれで実装できた。ほとんど同じようなものである。以外全く同じコードである。何度も書きそうであれば、マクロ化してしまうのも手だろう。