# Pre-RFC: Pattern API v3.0

**URL:** <https://internals.rust-lang.org/t/pre-rfc-pattern-api-v3-0/7900>\
**Category:** libs\
**Created:** [July 6, 2018, 5:50am UTC](https://internals.rust-lang.org/t/pre-rfc-pattern-api-v3-0/7900 "2018-07-06T05:50:37Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![kennytm](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/kennytm/32/161_2.png) [@kennytm](https://internals.rust-lang.org/u/kennytm)\
**Post date:** [July 6, 2018, 5:50am UTC](https://internals.rust-lang.org/t/pre-rfc-pattern-api-v3-0/7900/1 "2018-07-06T05:50:37Z")

</div>

Sales pitch:

- Support pattern API for `&str`, `&mut str`, `&[T]`, `&mut [T]` and `&OsStr`, optionally `Vec<T>` and `DoublyLinkedList<T>`.

- The new API allows `trim_start(&str)`'s speed to be improved up to 35×.

Draft:

- [https://github.com/kennytm/rfcs/blob/pattern-3/text/0000-pattern-3.md](https://github.com/kennytm/rfcs/blob/pattern-3/text/0000-pattern-3.md)

Prototype:

- Source: [https://github.com/kennytm/pattern-3](https://github.com/kennytm/pattern-3)
- Docs: [https://docs.rs/pattern-3/](https://docs.rs/pattern-3/)

---

<div class="post-metadata">

**Author:** ![Centril](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/centril/32/3334_2.png) [@Centril](https://internals.rust-lang.org/u/Centril)\
**Post date:** [July 6, 2018, 11:11am UTC](https://internals.rust-lang.org/t/pre-rfc-pattern-api-v3-0/7900/2 "2018-07-06T11:11:50Z")

</div>

Relevant: [https://crates.io/crates/galil-seiferas](https://crates.io/crates/galil-seiferas)

---

<div class="post-metadata">

**Author:** ![kennytm](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/kennytm/32/161_2.png) [@kennytm](https://internals.rust-lang.org/u/kennytm)\
**Post date:** [July 7, 2018, 7:25pm UTC](https://internals.rust-lang.org/t/pre-rfc-pattern-api-v3-0/7900/3 "2018-07-07T19:25:41Z")

</div>

Thanks for the pointer. You mean we could fallback to `galil-seiferas` instead of naive search when `T: PartialEq + !Ord`?

---

<div class="post-metadata">

**Author:** ![Centril](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/centril/32/3334_2.png) [@Centril](https://internals.rust-lang.org/u/Centril)\
**Post date:** [July 7, 2018, 8:00pm UTC](https://internals.rust-lang.org/t/pre-rfc-pattern-api-v3-0/7900/4 "2018-07-07T20:00:05Z")

</div>

Yeah, something like that might be a good idea.

(tho as always, constant factors may be more important for smaller inputs)

---

<div class="post-metadata">

**Author:** ![kennytm](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/kennytm/32/161_2.png) [@kennytm](https://internals.rust-lang.org/u/kennytm)\
**Post date:** [July 14, 2018, 8:24pm UTC](https://internals.rust-lang.org/t/pre-rfc-pattern-api-v3-0/7900/5 "2018-07-14T20:24:28Z")

</div>

Pushed as [RFC 2500](https://github.com/rust-lang/rfcs/pull/2500).

---

<div class="post-metadata">

**Author:** ![system](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/system/32/14092_2.png) [@system](https://internals.rust-lang.org/u/system)\
**Post date:** [March 25, 2019, 8:30am UTC](https://internals.rust-lang.org/t/pre-rfc-pattern-api-v3-0/7900/6 "2019-03-25T08:30:29Z")

</div>

Closed on March 25, 2019, 8:30am UTC

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
