2015-02-01 7 views
5

मैं Range बनाने में सक्षम होना चाहता हूं और फिर उस सीमा में एक चर निहित है तो परीक्षण करें। कुछ ऐसा है जो इस प्रकार है:यदि कोई रेंज के भीतर कोई मान है तो मैं कैसे परीक्षण कर सकता हूं?

fn main() { 
    let a = 3..5; 
    assert!(a.contains(4)); 
} 

अभी, केवल स्पष्ट बात मैं देख रहा हूँ Iterator::any उपयोग करने के लिए है। यह बदसूरत है क्योंकि यह (1) आपरेशन एक हे लेने के लिए और होगा है यह हे (एन):

fn main() { 
    let mut a = 3..5; 
    assert!(a.any(|v: i32| v == 4)); 
} 
+0

मेरे पास एक टोकरी ('range_check') है जो इसके लिए' युक्त 'और' भीतर 'लक्षण प्रदान करती है। –

उत्तर

4

Range ही (वर्तमान में, वैसे भी) पर कुछ भी नहीं है, लेकिन यह यह करने के लिए मुश्किल नहीं है; सब के बाद, यह सिर्फ तुलना में कुछ समय लगता:

4 >= a.start && 4 < a.end 
+0

क्या आपको लगता है कि पीआर इसे जोड़ने के लिए (सभी 'रेंज * 'structs) का स्वागत किया जाएगा? – Shepmaster

+2

आरएफसी के बिना नहीं। स्पष्ट रूप से, अनिवार्य सुविधा विस्तार 1.0 से पहले की संभावना नहीं है। उस ने कहा, एक आरएफसी लिखने के लिए अपेक्षाकृत आसान है। – bluss

+0

नकारात्मक संख्याओं के बारे में क्या? – mkirk

0

कुछ और रिलीज में, मूल कोड संकलन होगा, जैसा है। अभी, Range::contains एक रात सुविधा के रूप में मौजूद है:

#![feature(range_contains)] 

fn main() { 
    let a = 3..5; 
    assert!(a.contains(4)); 
} 

इस सुविधा का स्थिरीकरण issue 32311 में ट्रैक की जाती।

संबंधित मुद्दे

 संबंधित मुद्दे