#![feature(ascii_ctype)]
use std::ascii::AsciiExt;

pub fn is_pangram(words: &str) -> bool {
    let score = &mut [0u8; 26];

    for v in words.chars() {
        if !v.is_ascii_alphabetic() {
            continue;
        }

        score[v.to_ascii_lowercase() as usize - 'a' as usize] = 1;
    }

    score.iter().all(|&x| x == 1u8)
}

#![feature(ascii_ctype)]
use std::ascii::AsciiExt;

pub fn is_pangram(words: &str) -> bool {
    let r = words
        .chars()
        .filter(|x| x.is_ascii_alphabetic())
        .map(|x| x.to_ascii_lowercase() as u8 - b'a')
        .collect::<Vec<_>>();

    let score = &mut [0u8; 26];

    for v in r {
        score[v as usize] = 1;
    }

    score.iter().all(|&x| x == 1u8)
}

--- 
+++ 
@@ -2,14 +2,16 @@
 use std::ascii::AsciiExt;
 
 pub fn is_pangram(words: &str) -> bool {
+    let r = words
+        .chars()
+        .filter(|x| x.is_ascii_alphabetic())
+        .map(|x| x.to_ascii_lowercase() as u8 - b'a')
+        .collect::<Vec<_>>();
+
     let score = &mut [0u8; 26];
 
-    for v in words.chars() {
-        if !v.is_ascii_alphabetic() {
-            continue;
-        }
-
-        score[v.to_ascii_lowercase() as usize - 'a' as usize] = 1;
+    for v in r {
+        score[v as usize] = 1;
     }
 
     score.iter().all(|&x| x == 1u8)
Remove the code in functional style

I like this one since it is clean and effecient
