How to Check If Char is Vowel in Rust?

How to Check If Char is Vowel in Rust?

  • rust
  • 7 mins read

In Rust, checking if a character is a vowel is a simple task that can be accomplished using pattern matching. A vowel is any of the letters 'a', 'e', 'i', 'o', or 'u' (both uppercase and lowercase). In this tutorial, we'll explore different ways to check if a character is a vowel in Rust.

Using Pattern Matching to Check if Char is Vowel in Rust

One way to check if a character is a vowel in Rust is by using pattern matching. The following code demonstrates how to check if a character is a vowel using pattern matching:

fn is_vowel(c: char) -> bool {
    match c {
        'a' | 'A' | 'e' | 'E' | 'i' | 'I' | 'o' | 'O' | 'u' | 'U' => true,
        _ => false,
    }
}

The is_vowel function takes a single argument of type char, which is the character to check. It then matches the character against all possible vowels (both uppercase and lowercase) using the match expression. If the character matches any of the vowels, it returns true; otherwise, it returns false.

Let's test this function with some examples:

fn main() {
    let vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];

    for c in vowels.iter() {
        println!("{} is vowel: {}", c, is_vowel(*c));
    }

    println!("Z is vowel: {}", is_vowel('Z'));
}

In the example above, we define an array of vowels and iterate through each character in the array, calling the is_vowel function to check if the character is a vowel. We also test the function with the character 'Z', which is not a vowel. When we run the program, we get the following output:

a is vowel: true
e is vowel: true
i is vowel: true
o is vowel: true
u is vowel: true
A is vowel: true
E is vowel: true
I is vowel: true
O is vowel: true
U is vowel: true
Z is vowel: false

As we can see from the output, the function correctly identifies all vowels as vowels and 'Z' as not a vowel.

Using a Set

Another way to check if a character is a vowel in Rust is by using a set. We can create a set of vowels and check if the character is in the set. The following code demonstrates how to check if a character is a vowel using a set:

use std::collections::HashSet;

fn is_vowel(c: char) -> bool {
    let vowels: HashSet<char> = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'].iter().cloned().collect();
    vowels.contains(&c)
}

The is_vowel function creates a set of vowels using the HashSet data structure. It then checks if the character is in the set by calling the contains method on the set. If the character is in the set, it returns true; otherwise, it returns false.

Let's test this function with some examples:

use std::collections::HashSet;

fn is_vowel(c: char) -> bool {
    let vowels: HashSet<char> = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'].iter().cloned().collect();
    vowels.contains(&c)
}
fn main() {
    let vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
    for c in vowels.iter() {
    println!("{} is vowel: {}", c, is_vowel(*c));
}

println!("Z is vowel: {}", is_vowel('Z'));
}

In the example above, we define an array of vowels and iterate through each character in the array, calling the `is_vowel` function to check if the character is a vowel. We also test the function with the character 'Z', which is not a vowel. When we run the program, we get the following output:

a is vowel: true
e is vowel: true
i is vowel: true
o is vowel: true
u is vowel: true
A is vowel: true
E is vowel: true
I is vowel: true
O is vowel: true
U is vowel: true
Z is vowel: false

As we can see from the output, the function correctly identifies all vowels as vowels and 'Z' as not a vowel.

Using an Array

We can also use an array to check if a character is a vowel in Rust. The following code demonstrates how to check if a character is a vowel using an array:

fn is_vowel(c: char) -> bool {
    let vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];
    vowels.contains(&c)
}

The is_vowel function creates an array of vowels and checks if the character is in the array by calling the contains method on the array. If the character is in the array, it returns true; otherwise, it returns false.

Let's test this function with some examples:

fn main() {
    let vowels = ['a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U'];

    for c in vowels.iter() {
        println!("{} is vowel: {}", c, is_vowel(*c));
    }

    println!("Z is vowel: {}", is_vowel('Z'));
}

In the example above, we define an array of vowels and iterate through each character in the array, calling the is_vowel function to check if the character is a vowel. We also test the function with the character 'Z', which is not a vowel. When we run the program, we get the following output:

a is vowel: true
e is vowel: true
i is vowel: true
o is vowel: true
u is vowel: true
A is vowel: true
E is vowel: true
I is vowel: true
O is vowel: true
U is vowel: true
Z is vowel: false

As we can see from the output, the function correctly identifies all vowels as vowels and 'Z' as not a vowel.

See also: Rust: Check if a string is a number

Conclusion

In Rust, checking if a character is a vowel is a simple task that can be accomplished using pattern matching, a set, or an array. Each of these approaches has its own advantages and disadvantages, so choose the one that suits your needs best.

FAQs: Check if char is vowel in Rust

What is the difference between using pattern matching, a set, and an array to check if a character is a vowel in Rust?

Pattern matching is useful if you only need to check a small number of characters, such as vowels or consonants. It is also easy to read and understand. However, it can become verbose if you have to check many characters.
A set is useful if you have to check many characters and want to avoid repeating code. However, it can be less efficient than pattern matching or an array.
An array is useful if you have a fixed set of characters to check and want to ensure efficient performance. However, it can be less flexible than pattern matching or a set.

Can I check if a string contains a vowel in Rust?

Yes, you can check if a string contains a vowel by iterating through each character in the string and checking if it is a vowel using one of the methods described above. Alternatively, you can use regular expressions to check for vowels.

How can I handle non-ASCII characters when checking for vowels in Rust?

If you need to handle non-ASCII characters, you can use the is_alphabetic method to check if a character is an alphabetic character, and then check if it is a vowel using one of the methods described above. Alternatively, you can use Unicode properties to check if a character is a vowel. For example, you can use the UnicodeSegmentation crate to check if a character is a vowel by comparing it to the set of Unicode characters with the Mn property, which includes diacritic marks commonly used in vowel characters.