型定義の時点では、追加の制約の有無は基本的に関係ない[6]。違いは、前者が文字列との相互運用のみを前提とする単純な実装で、後者は文字列のみならずバイト列との相互変換などが扱える点である。利便性で考えれば後者が良いが、実装が若干煩雑になる箇所もある。よって、本記事では単純な実装で誤魔化すこともできるよう、両方のコード例を提示する。文字列であるともいえる。参照することもできる場合、好みの問題ではあるがより強い制約を表明している型で持つと多少楽かもしれない。いうのも、制約を外すのは簡単だが、制約を加えるには大抵実行時に検査のコストがかかるからである。するのは実質ノーコストで可能である。処理を行わなければいけない。相互運用性を十分に確保しようとすると、これら3つの型の間で適切な型変換を挟む必要があるため、実装としては若干煩雑になる。型を内部に持たせることとする。したが、フィールドをひとつしか持たない通常の構造体で定義してもよい。str,}通常の構造体を使うこともできるこの辺りは純粋に好みの問題である。置くことは問題がない。なくても良いのだが、その場合、もはや新しく定義する型はスライス型ではなくなるため、本記事の対象範囲外である。必要になるトレイトは使えないことに注意が必要である。前提としているため同じく実装できない。