Comments (5)
What does "raise an error" mean? Is it a compile-time error or run-time error? "url does not live long enough" sounds like a compile-time error, but that code builds fine for me. Is this the same code that the one that triggers the errors?
I can get this error message with code like this:
extern crate url;
use url::Url;
fn main(){
let raw_url = "";
let url_r = Url::parse(raw_url);
let domain = match url_r {
Ok(url) => {
match url.domain() {
Some(d) => d,
None => return
}
}
Err(e) => {
println!("{}", e);
return
}
};
println!("{}", domain)
}
domain()
returns a Option<&'a str>
with a string slice that points to existing memory. That memory has to be kept around somewhere (such as a local variable) at least as long as the result of domain()
exists. Here, the url_r
variable (of type Result<Url, url::ParseError>
) owns its contents, but it is moved out of in the Ok(url)
pattern, which makes a url
variable of type Url
that owns its contents. url
only exists in that match
branch, so the result of domain()
can only be used there. If you change the pattern to Ok(ref url)
, the url
variable will be a reference &Url
to the content of the url_r
variable, and therefore the result of domain()
will have a longer life time: that of url_r
.
from rust-url.
You are right, I meant a compile time error.
I'm still a little confused about what I need to do to get this to work - which almost certainly has to do with my inexperience with Rust. Still though, it'd be nice if the documentation had examples of how best to work with URL's in this library, without panicking if something bad gets parsed.
from rust-url.
I should note I tried changing the line to Ok(ref url)
and I'm still getting an error - a slightly different error.
error: `(url_r:core::result::Ok).0` does not live long enough
from rust-url.
The code you copied in the first message compiles fine for me, so I suspect that the code trigger an error for you is not the same. Please provide the actual code that triggers the error so that I can reproduce it. (Preferably, a minimal form of it.)
from rust-url.
Hmm, you're right, it turns out it had to do with another part of my program - sorry :(
from rust-url.
Related Issues (20)
- percent_encoding::NON_ALPHANUMERIC should be configurable
- Panicked at 'assertion failed: self.is_char_boundary(new_len)'
- Disabling "remove dot segments" behavior HOT 2
- Mark Origin::unicode_serialization as deprecated?
- Is it possible to force the %-encoding of `+`? HOT 1
- Release new version of `data-url` HOT 1
- idna::punycode::encode_str() wrong conversion ? HOT 2
- Add parameter spaceAsPlus to ByteSerialize
- Incorrect parsing of Windows drive letter quirk
- Invalid IPv4 but parsing success HOT 1
- URL http:www.google.com is passed as validated HOT 1
- Host should implement deserialize to parse strings
- JOIN functionality not working HOT 4
- URL validity change between 2.2 and 2.3. HOT 2
- Documentation for IDNA configuration options should explain use cases
- Feature request: add parser boolean option to leave relative paths in the URL.
- Neither punycode::encode_str nor Config::...::to_ascii return expected results for single Unicode char and "EXAMPLE" HOT 3
- `Url::from_file_path()` incorrect handling of backslash on linux
- `=` is not being escaped as query value HOT 2
- [DataUrl] Unable to parse application/json;utf8 containing # HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rust-url.