<commit_before># `optin_builtin_traits`

The tracking issue for this feature is [#13231] 

[#13231]: https://github.com/rust-lang/rust/issues/13231

----

The `optin_builtin_traits` feature gate allows you to define auto traits.

Auto traits, like [`Send`] or [`Sync`] in the standard library, are marker traits
that are automatically implemented for every type, unless the type, or a type it contains, 
has explicitly opted out via a negative impl. 

[`Send`]: https://doc.rust-lang.org/std/marker/trait.Send.html
[`Sync`]: https://doc.rust-lang.org/std/marker/trait.Sync.html

```rust,ignore
impl !Type for Trait
```

Example:

```rust
#![feature(optin_builtin_traits)]

auto trait Valid {}

struct True;
struct False;
<commit_msg>Rollup merge of #69788 - ArekPiekarz:unstable_book_optin_builtin_traits, r=Dylan-DPC<commit_after># `optin_builtin_traits`

The tracking issue for this feature is [#13231] 

[#13231]: https://github.com/rust-lang/rust/issues/13231

----

The `optin_builtin_traits` feature gate allows you to define auto traits.

Auto traits, like [`Send`] or [`Sync`] in the standard library, are marker traits
that are automatically implemented for every type, unless the type, or a type it contains, 
has explicitly opted out via a negative impl. 

[`Send`]: https://doc.rust-lang.org/std/marker/trait.Send.html
[`Sync`]: https://doc.rust-lang.org/std/marker/trait.Sync.html

```rust,ignore
impl !Trait for Type
```

Example:

```rust
#![feature(optin_builtin_traits)]

auto trait Valid {}

struct True;
struct False;

{'fraction_non_alphanumeric': 0.13012361743656473, 'fraction_numerical': 0.02277163305139883, 'mean_word_length': 4.80377358490566, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 6, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6889757', 'n_tokens_mistral': 538, 'n_tokens_neox': 505, 'n_words': 159}