File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -181,8 +181,34 @@ impl PyTuple {
181181 }
182182
183183 #[ pymethod( name = "index" ) ]
184- fn index ( & self , needle : PyObjectRef , vm : & VirtualMachine ) -> PyResult < usize > {
185- for ( index, element) in self . elements . iter ( ) . enumerate ( ) {
184+ fn index (
185+ & self ,
186+ needle : PyObjectRef ,
187+ start : OptionalArg < isize > ,
188+ stop : OptionalArg < isize > ,
189+ vm : & VirtualMachine ,
190+ ) -> PyResult < usize > {
191+ let mut start = start. into_option ( ) . unwrap_or ( 0 ) ;
192+ if start < 0 {
193+ start += self . borrow_value ( ) . len ( ) as isize ;
194+ if start < 0 {
195+ start = 0 ;
196+ }
197+ }
198+ let mut stop = stop. into_option ( ) . unwrap_or ( isize:: MAX ) ;
199+ if stop < 0 {
200+ stop += self . borrow_value ( ) . len ( ) as isize ;
201+ if stop < 0 {
202+ stop = 0 ;
203+ }
204+ }
205+ for ( index, element) in self
206+ . elements
207+ . iter ( )
208+ . enumerate ( )
209+ . take ( stop as usize )
210+ . skip ( start as usize )
211+ {
186212 if vm. identical_or_equal ( element, & needle) ? {
187213 return Ok ( index) ;
188214 }
You can’t perform that action at this time.
0 commit comments