#![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,16 +2,14 @@
 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;
+    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)
Remove the code in functional style

I like this one since it is clean and effecient
