mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-11-04 06:56:14 +00:00 
			
		
		
		
	On borrow return type, suggest borrowing from arg or owned return type
When we encounter a function with a return type that has an anonymous lifetime with no argument to borrow from, besides suggesting the `'static` lifetime we now also suggest changing the arguments to be borrows or changing the return type to be an owned type.
```
error[E0106]: missing lifetime specifier
  --> $DIR/variadic-ffi-6.rs:7:6
   |
LL | ) -> &usize {
   |      ^ expected named lifetime parameter
   |
   = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`
   |
LL | ) -> &'static usize {
   |       +++++++
help: instead, you are more likely to want to change one of the arguments to be borrowed...
   |
LL |     x: &usize,
   |        +
help: ...or alternatively, to want to return an owned value
   |
LL - ) -> &usize {
LL + ) -> usize {
   |
```
Fix #85843.
		
	
			
		
			
				
	
	
		
			25 lines
		
	
	
		
			806 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			25 lines
		
	
	
		
			806 B
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
error[E0106]: missing lifetime specifier
 | 
						|
  --> $DIR/variadic-ffi-6.rs:7:6
 | 
						|
   |
 | 
						|
LL | ) -> &usize {
 | 
						|
   |      ^ expected named lifetime parameter
 | 
						|
   |
 | 
						|
   = help: this function's return type contains a borrowed value, but there is no value for it to be borrowed from
 | 
						|
help: consider using the `'static` lifetime, but this is uncommon unless you're returning a borrowed value from a `const` or a `static`
 | 
						|
   |
 | 
						|
LL | ) -> &'static usize {
 | 
						|
   |       +++++++
 | 
						|
help: instead, you are more likely to want to change one of the arguments to be borrowed...
 | 
						|
   |
 | 
						|
LL |     x: &usize,
 | 
						|
   |        +
 | 
						|
help: ...or alternatively, you might want to return an owned value
 | 
						|
   |
 | 
						|
LL - ) -> &usize {
 | 
						|
LL + ) -> usize {
 | 
						|
   |
 | 
						|
 | 
						|
error: aborting due to 1 previous error
 | 
						|
 | 
						|
For more information about this error, try `rustc --explain E0106`.
 |