aboutsummaryrefslogtreecommitdiffstats
path: root/src/jenkins.rs
diff options
context:
space:
mode:
authorTeddy Wing2017-11-09 20:05:44 +0100
committerTeddy Wing2017-11-09 20:05:44 +0100
commit69b930565a118f1f9890492e9f3130e23091b398 (patch)
tree1636ce6350bf064ef99d764958b63c1f700b1a5e /src/jenkins.rs
parentfe3401411a324a7777514f66b1e79a3331ed0690 (diff)
downloadkipper-69b930565a118f1f9890492e9f3130e23091b398.tar.bz2
Fix move compilation errors in `find_and_track_build_and_update_status`
I had a bunch of compilation errors in this function because I wasn't borrowing correctly. Fix the errors with borrows by reference, and copying strings. Here are the errors for reference: error[E0373]: closure may outlive the current function, but it borrows `job`, which is owned by the current function --> src/jenkins.rs:89:27 | 89 | thread::spawn(|| { | ^^ may outlive borrowed value `job` ... 94 | job.result.commit_status(), | --- `job` is borrowed here | help: to force the closure to take ownership of `job` (and any other referenced variables), use the `move` keyword | 89 | thread::spawn(move || { | ^^^^^^^ error[E0373]: closure may outlive the current function, but it borrows `job_url`, which is owned by the current function --> src/jenkins.rs:89:27 | 89 | thread::spawn(|| { | ^^ may outlive borrowed value `job_url` ... 96 | job_url.clone(), | ------- `job_url` is borrowed here | help: to force the closure to take ownership of `job_url` (and any other referenced variables), use the `move` keyword | 89 | thread::spawn(move || { | ^^^^^^^ error[E0382]: use of moved value: `commit_ref` --> src/jenkins.rs:88:32 | 88 | if job_for_commit(job, commit_ref) { | ^^^^^^^^^^ value moved here in previous iteration of loop | = note: move occurs because `commit_ref` has type `pull_request::CommitRef`, which does not implement the `Copy` trait error[E0382]: capture of moved value: `commit_ref` --> src/jenkins.rs:93:21 | 88 | if job_for_commit(job, commit_ref) { | ---------- value moved here ... 93 | commit_ref, | ^^^^^^^^^^ value captured here after move | = note: move occurs because `commit_ref` has type `pull_request::CommitRef`, which does not implement the `Copy` trait error[E0382]: capture of moved value: `job` --> src/jenkins.rs:89:27 | 88 | if job_for_commit(job, commit_ref) { | --- value moved here 89 | thread::spawn(|| { | ^^ value captured here after move | = note: move occurs because `job` has type `jenkins::Job`, which does not implement the `Copy` trait error[E0382]: capture of moved value: `job_url` --> src/jenkins.rs:89:27 | 85 | let job = request_job(job_url); | ------- value moved here ... 89 | thread::spawn(|| { | ^^ value captured here after move | = note: move occurs because `job_url` has type `std::string::String`, which does not implement the `Copy` trait
Diffstat (limited to 'src/jenkins.rs')
-rw-r--r--src/jenkins.rs18
1 files changed, 9 insertions, 9 deletions
diff --git a/src/jenkins.rs b/src/jenkins.rs
index 0992983..2034492 100644
--- a/src/jenkins.rs
+++ b/src/jenkins.rs
@@ -82,17 +82,17 @@ pub fn find_and_track_build_and_update_status(
let jobs = get_jobs(repo_name);
for job_url in jobs {
- let job = request_job(job_url);
+ let job = request_job(job_url.as_ref());
// Does `displayName` match
- if job_for_commit(job, commit_ref) {
- thread::spawn(|| {
+ if job_for_commit(&job, &commit_ref) {
+ thread::spawn(move || {
// Start timer
github::update_commit_status(
- commit_ref,
- job.result.commit_status(),
- job_url,
+ &commit_ref,
+ &job.result.commit_status(),
+ job_url.clone(),
None,
"continuous-integration/jenkins".to_string()
);
@@ -143,7 +143,7 @@ pub fn get_jobs(repo_name: String) -> Vec<String> {
.collect::<Vec<String>>()
}
-pub fn request_job(url: String) -> Job {
+pub fn request_job(url: &str) -> Job {
let url = Url::parse(url.as_ref()).unwrap();
let client = reqwest::Client::new();
@@ -166,8 +166,8 @@ pub fn request_job(url: String) -> Job {
}
// Does the `commit_ref` correspond to the job?
-pub fn job_for_commit(job: Job, commit_ref: CommitRef) -> bool {
- job.display_name == af83::job_name(commit_ref)
+pub fn job_for_commit(job: &Job, commit_ref: &CommitRef) -> bool {
+ job.display_name == af83::job_name(&commit_ref)
}
pub fn result_from_job(status: Option<String>) -> JobStatus {