Crate memx

Source
Expand description

memx minics libc.

This crate is implemented memory functions like libc memcmp(), memchr(), memmem(), memcpy(), memset().

§Features

  • Rewriting with rust lang.
  • minimum support rustc 1.56.1 (59eed8a2a 2021-11-01)

§Todo

  • Support the zero overhead trait.
  • Support more fast routine on armv7-android
  • Support more fast routine on x86_64
  • Support #![no_std]

§Support status of miri :: rustc 1.68.0-nightly (77429957a 2023-01-01)

Ok lists:

  • cargo +nightly miri test –target=x86_64-unknown-linux-gnu
  • cargo +nightly miri test –target=i686-unknown-linux-gnu
  • cargo +nightly miri test –target=i586-unknown-linux-gnu
  • cargo +nightly miri test –target=aarch64-unknown-linux-gnu
  • cargo +nightly miri test –target=armv7-unknown-linux-gnueabihf

Failed lists:

  • nothing

Modules§

iter

Structs§

RangeError
used by memcpy()

Functions§

memchr
This mimics libc::memchr(), same as buf.iter().position(|&x| x == by1).
memchr_dbl
This is same as buf.iter().position(|&x| x == by1 || x == by2).
memchr_qpl
This is same as buf.iter().position(|&x| x == by1 || x == by2 || x == by3 || x == by4).
memchr_tpl
This is same as buf.iter().position(|&x| x == by1 || x == by2 || x == by3).
memcmp
This mimics libc::memcmp(), same as a.cmp(&b).
memcpy
This mimics libc::memcpy(), same as dst = src.
memeq
This mimics libc::bcmp(), same as a == b.
memmem
This mimics libc::memmem(), same as (haystack as &str).find(needle as &str) or haystack.windows(needle.len()).position(|window| window == needle).
memnechr
This is same as buf.iter().position(|&x| x != by1), not included libc.
memnechr_dbl
This is same as buf.iter().position(|&x| x != by1 && x != by2), not included libc.
memnechr_qpl
This is same as buf.iter().position(|&x| x != by1 && x != by2 && x != by3 && x != by4), not included libc.
memnechr_tpl
This is same as buf.iter().position(|&x| x != by1 && x != by2 && x != by3), not included libc.
memrchr
This mimics libc::memrchr(), same as buf.iter().rposition(|&x| x == by1).
memrchr_dbl
This is same as buf.iter().rposition(|&x| x == by1 || x == by2).
memrchr_qpl
This is same as buf.iter().rposition(|&x| x == by1 || x == by2 || x == by3 || x == by4).
memrchr_tpl
This is same as buf.iter().rposition(|&x| x == by1 || x == by2 || x == by3).
memrmem
This mimics libc::memrmem(), same as (haystack as &str).rfind(needle as &str) or haystack.windows(needle.len()).rposition(|window| window == needle).
memrnechr
This is same as buf.iter().rposition(|&x| x != by1), not included libc.
memrnechr_dbl
This is same as buf.iter().rposition(|&x| x != by1 && x != by2), not included libc.
memrnechr_qpl
This is same as buf.iter().rposition(|&x| x != by1 && x != by2 && x != by3 && x != by4), not included libc.
memrnechr_tpl
This is same as buf.iter().rposition(|&x| x != by1 && x != by2 && x != by3), not included libc.
memset
This mimics libc::memset(), same as buf.fill(c).