Skip to main content

CaseDetector

Struct CaseDetector 

Source
pub struct CaseDetector { /* private fields */ }
Expand description

A detector for determining which cases a string matches.

CaseDetector maintains a pool of cases and provides a method to detect which cases from the pool match a given string.

§Example

use convert_case::Case;
use convert_case_extras::CaseDetector;

// Default detector with all standard cases
let detector = CaseDetector::default();
let matches = detector.detect_cases("my_variable_name");
assert!(matches.contains(&Case::Snake));

// Custom detector with specific cases
let detector = CaseDetector::new()
    .add_case(Case::Snake)
    .add_case(Case::Kebab);
let matches = detector.detect_cases("hello-world");
assert_eq!(matches, vec![Case::Kebab]);

Implementations§

Source§

impl CaseDetector

Source

pub fn new() -> Self

Creates a new CaseDetector with an empty pool.

Use builder methods like add_case to populate the pool.

Use default instead to use all of the cases available in convert-case.

§Example
use convert_case::Case;
use convert_case_extras::CaseDetector;

let detector = CaseDetector::new()
    .add_case(Case::Snake)
    .add_case(Case::Kebab);
Source

pub fn add_case(self, case: Case<'static>) -> Self

Adds a case to the pool. Returns self for method chaining.

§Example
use convert_case::Case;
use convert_case_extras::CaseDetector;

let detector = CaseDetector::new()
    .add_case(Case::Snake)
    .add_case(Case::Kebab);
Source

pub fn add_cases(self, cases: &[Case<'static>]) -> Self

Adds multiple cases to the pool. Returns self for method chaining.

§Example
use convert_case::Case;
use convert_case_extras::CaseDetector;

let detector = CaseDetector::new()
    .add_cases(&[Case::Snake, Case::Kebab, Case::Camel]);
Source

pub fn remove_case(self, case: Case<'static>) -> Self

Removes a case from the pool. Returns self for method chaining.

§Example
use convert_case::Case;
use convert_case_extras::CaseDetector;

let detector = CaseDetector::default()
    .remove_case(Case::Flat)
    .remove_case(Case::UpperFlat);
Source

pub fn remove_cases(self, cases: &[Case<'static>]) -> Self

Removes multiple cases from the pool. Returns self for method chaining.

§Example
use convert_case::Case;
use convert_case_extras::CaseDetector;

let detector = CaseDetector::default()
    .remove_cases(&[Case::Flat, Case::UpperFlat]);
Source

pub fn detect_cases<T: AsRef<str>>(&self, s: T) -> Vec<Case<'static>>

Detects all cases from the pool that the given string matches.

A string “matches” a case if converting it to that case produces the same string (i.e., s.to_case(case) == s).

§Example
use convert_case::Case;
use convert_case_extras::CaseDetector;

let detector = CaseDetector::default();

let matches = detector.detect_cases("hello_world");
assert!(matches.contains(&Case::Snake));
assert!(!matches.contains(&Case::Kebab));

// Single lowercase word matches multiple cases
let matches = detector.detect_cases("word");
assert!(matches.contains(&Case::Snake));
assert!(matches.contains(&Case::Kebab));
assert!(matches.contains(&Case::Flat));

Trait Implementations§

Source§

impl Clone for CaseDetector

Source§

fn clone(&self) -> CaseDetector

Returns a duplicate of the value. Read more
1.0.0 · Source§

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

Performs copy-assignment from source. Read more
Source§

impl Debug for CaseDetector

Source§

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

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

impl Default for CaseDetector

Source§

fn default() -> Self

Creates a CaseDetector with all standard cases from Case::all_cases().

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.