@@ -229,13 +229,13 @@ pub fn getopts(args: &[~str], opts: &[Opt]) -> Result {
229
229
let l = args. len ( ) ;
230
230
let mut i = 0 ;
231
231
while i < l {
232
- let cur = copy args[ i] ;
232
+ let cur = args[ i] ;
233
233
let curlen = cur. len ( ) ;
234
234
if !is_arg ( cur) {
235
235
free. push ( cur) ;
236
236
} else if cur == ~"--" {
237
237
let mut j = i + 1;
238
- while j < l { free.push(copy args[j]); j += 1; }
238
+ while j < l { free.push(args[j]); j += 1; }
239
239
break;
240
240
} else {
241
241
let mut names;
@@ -248,8 +248,8 @@ pub fn getopts(args: &[~str], opts: &[Opt]) -> Result {
248
248
names = ~[Long(tail)];
249
249
} else {
250
250
names =
251
- ~[Long(copy tail_eq[0])];
252
- i_arg = Some(copy tail_eq[1]);
251
+ ~[Long(tail_eq[0])];
252
+ i_arg = Some(tail_eq[1]);
253
253
}
254
254
} else {
255
255
let mut j = 1;
@@ -266,7 +266,7 @@ pub fn getopts(args: &[~str], opts: &[Opt]) -> Result {
266
266
interpreted correctly
267
267
*/
268
268
269
- match find_opt(opts, copy opt) {
269
+ match find_opt(opts, opt) {
270
270
Some(id) => last_valid_opt_id = Some(id),
271
271
None => {
272
272
let arg_follows =
@@ -292,7 +292,7 @@ pub fn getopts(args: &[~str], opts: &[Opt]) -> Result {
292
292
let mut name_pos = 0;
293
293
for names.each() |nm| {
294
294
name_pos += 1;
295
- let optid = match find_opt(opts, copy *nm) {
295
+ let optid = match find_opt(opts, *nm) {
296
296
Some(id) => id,
297
297
None => return Err(UnrecognizedOption(name_str(nm)))
298
298
};
@@ -305,18 +305,18 @@ pub fn getopts(args: &[~str], opts: &[Opt]) -> Result {
305
305
}
306
306
Maybe => {
307
307
if !i_arg.is_none() {
308
- vals[optid].push(Val((copy i_arg) .get()));
308
+ vals[optid].push(Val(i_arg.get()));
309
309
} else if name_pos < names.len() ||
310
310
i + 1 == l || is_arg(args[i + 1]) {
311
311
vals[optid].push(Given);
312
- } else { i += 1; vals[optid].push(Val(copy args[i])); }
312
+ } else { i += 1; vals[optid].push(Val(args[i])); }
313
313
}
314
314
Yes => {
315
315
if !i_arg.is_none() {
316
- vals[optid].push(Val((copy i_arg) .get()));
316
+ vals[optid].push(Val(i_arg.get()));
317
317
} else if i + 1 == l {
318
318
return Err(ArgumentMissing(name_str(nm)));
319
- } else { i += 1; vals[optid].push(Val(copy args[i])); }
319
+ } else { i += 1; vals[optid].push(Val(args[i])); }
320
320
}
321
321
}
322
322
}
@@ -346,15 +346,15 @@ pub fn getopts(args: &[~str], opts: &[Opt]) -> Result {
346
346
347
347
fn opt_vals(mm: &Matches, nm: &str) -> ~[Optval] {
348
348
return match find_opt(mm.opts, mkname(nm)) {
349
- Some(id) => copy mm.vals[id],
349
+ Some(id) => mm.vals[id],
350
350
None => {
351
351
error!(" No option ' %s' defined", nm) ;
352
352
fail!( )
353
353
}
354
354
} ;
355
355
}
356
356
357
- fn opt_val( mm: & Matches , nm: & str ) -> Optval { copy opt_vals ( mm, nm) [ 0 ] }
357
+ fn opt_val( mm: & Matches , nm: & str ) -> Optval { return opt_vals ( mm, nm) [ 0 ] ; }
358
358
359
359
/// Returns true if an option was matched
360
360
pub fn opt_present ( mm : & Matches , nm : & str ) -> bool {
@@ -547,29 +547,25 @@ pub mod groups {
547
547
// translate OptGroup into Opt
548
548
// (both short and long names correspond to different Opts)
549
549
pub fn long_to_short( lopt : & OptGroup ) -> ~[ Opt ] {
550
- let OptGroup { short_name : short_name,
551
- long_name : long_name,
552
- hasarg : hasarg,
553
- occur : occur,
554
- _} = copy * lopt;
550
+ match ( ( * lopt) . short_name . len ( ) ,
551
+ ( * lopt) . long_name . len ( ) ) {
555
552
556
- match ( short_name. len ( ) , long_name. len ( ) ) {
557
553
( 0 , 0 ) => fail!( ~"this long-format option was given no name"),
558
554
559
- (0,_) => ~[Opt {name: Long((long_name)),
560
- hasarg: hasarg,
561
- occur: occur}],
555
+ (0,_) => ~[Opt {name: Long(((*lopt). long_name)),
556
+ hasarg: (*lopt). hasarg,
557
+ occur: (*lopt). occur}],
562
558
563
- (1,0) => ~[Opt {name: Short(str::char_at(short_name, 0)),
564
- hasarg: hasarg,
565
- occur: occur}],
559
+ (1,0) => ~[Opt {name: Short(str::char_at((*lopt). short_name, 0)),
560
+ hasarg: (*lopt). hasarg,
561
+ occur: (*lopt). occur}],
566
562
567
- (1,_) => ~[Opt {name: Short(str::char_at(short_name, 0)),
568
- hasarg: hasarg,
569
- occur: occur},
570
- Opt {name: Long((long_name)),
571
- hasarg: hasarg,
572
- occur: occur}],
563
+ (1,_) => ~[Opt {name: Short(str::char_at((*lopt). short_name, 0)),
564
+ hasarg: (*lopt). hasarg,
565
+ occur: (*lopt). occur},
566
+ Opt {name: Long(((*lopt). long_name)),
567
+ hasarg: (*lopt). hasarg,
568
+ occur: (*lopt). occur}],
573
569
574
570
(_,_) => fail!(~" something is wrong with the long-form opt")
575
571
}
@@ -590,12 +586,11 @@ pub mod groups {
590
586
let desc_sep = ~"\n " + str :: repeat( ~" ", 24);
591
587
592
588
let rows = vec::map(opts, |optref| {
593
- let OptGroup{short_name: short_name,
594
- long_name: long_name,
595
- hint: hint,
596
- desc: desc,
597
- hasarg: hasarg,
598
- _} = copy *optref;
589
+ let short_name = (*optref).short_name;
590
+ let long_name = (*optref).long_name;
591
+ let hint = (*optref).hint;
592
+ let desc = (*optref).desc;
593
+ let hasarg = (*optref).hasarg;
599
594
600
595
let mut row = str::repeat(~" ", 4);
601
596
@@ -625,7 +620,7 @@ pub mod groups {
625
620
row += if rowlen < 24 {
626
621
str::repeat(~" ", 24 - rowlen)
627
622
} else {
628
- copy desc_sep
623
+ desc_sep
629
624
};
630
625
631
626
// Normalize desc to contain words separated by one space character
@@ -897,7 +892,7 @@ mod tests {
897
892
let rs = getopts(args, opts);
898
893
match rs {
899
894
Err(copy f) => {
900
- error!(fail_str(copy f));
895
+ error!(fail_str(f));
901
896
check_fail_type(f, UnexpectedArgument_);
902
897
}
903
898
_ => fail!()
0 commit comments