Skip to main content

Filter

Enum Filter 

Source
#[non_exhaustive]
pub enum Filter { Uncgi, Iso8859_1, Utf8, Safe { replacement: u8, unsafe_chars: Vec<u8>, }, Wipeup { separator: u8, remove_trailing: bool, }, MaxLength { limit: usize, }, SafePlatform, }
Expand description

One transformation step in the Sequence pipeline.

#[non_exhaustive] is required (FR-039) so SemVer-minor releases can add new variants such as a future --transliterate=deunicode opt-in.

§Construction shortcut

For Filter::Safe with the default unsafe-character set, prefer Filter::safe_default() over enumerating the byte set manually.

Variants (Non-exhaustive)§

This enum is marked as non-exhaustive
Non-exhaustive enums could have additional variants added in future. Therefore, when matching against variants of non-exhaustive enums, an extra wildcard arm must be added to account for any future variants.
§

Uncgi

Decode CGI percent-escapes (%XX → single byte). FR-001.

§

Iso8859_1

Translate Latin-1 high bytes (0x80–0xFF) to ASCII via the vendored Table.iso8859_1. FR-002.

§

Utf8

Translate UTF-8 codepoints to ASCII via the vendored Table.utf_8. Unmapped codepoints pass through. FR-003.

§

Safe

Replace each unsafe-set byte with replacement. FR-004.

Fields

§replacement: u8

Replacement byte (default b'_').

§unsafe_chars: Vec<u8>

Bytes considered unsafe. See DEFAULT_UNSAFE_CHARS for the v0.1.0 default; callers MAY pass any byte set.

§

Wipeup

Collapse runs of separator into one occurrence; when remove_trailing is true, also trim leading/trailing runs. FR-005.

Fields

§separator: u8

Separator byte (default DEFAULT_SEPARATOR).

§remove_trailing: bool

When true, trim leading and trailing runs of separator.

§

MaxLength

Truncate to limit bytes while preserving the final extension token (everything after the last .). FR-006.

Fields

§limit: usize

Maximum total byte length of the basename.

§

SafePlatform

Rewrite Windows-reserved device names (CON, PRN, AUX, NUL, COM1–9, LPT1–9) by suffixing the basename with _, and rewrite Windows- reserved characters (< > : " | ? *) and ASCII control bytes using the same replacement as Filter::Safe. FR-007.

Auto-enabled on Windows builds; opt-in elsewhere via a sequence entry.

Implementations§

Source§

impl Filter

Source

pub fn safe_default() -> Self

Construct a Filter::Safe with the v0.1.0 default unsafe-character set and b'_' replacement (FR-004 + clarification Q10). Convenience constructor for callers who want the upstream-compatible default without enumerating the byte set.

§Examples
use rusty_detox::Filter;

let safe = Filter::safe_default();
assert!(matches!(safe, Filter::Safe { replacement: b'_', .. }));
Source

pub fn wipeup_default() -> Self

Construct a Filter::Wipeup with b'_' separator and trailing trimming enabled (matches upstream’s default sequence).

Source

pub fn apply(&self, input: &[u8]) -> Vec<u8>

Apply this single filter to input, returning the transformed bytes.

Trait Implementations§

Source§

impl Clone for Filter

Source§

fn clone(&self) -> Filter

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for Filter

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl PartialEq for Filter

Source§

fn eq(&self, other: &Filter) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
Source§

impl Eq for Filter

Source§

impl StructuralPartialEq for Filter

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.