Update async-executor to 1.3.0 (#526)
This commit is contained in:
		
							parent
							
								
									924afc3c0c
								
							
						
					
					
						commit
						b05708f66a
					
				@ -13,6 +13,6 @@ edition = "2018"
 | 
				
			|||||||
[dependencies]
 | 
					[dependencies]
 | 
				
			||||||
futures-lite = "1.4.0"
 | 
					futures-lite = "1.4.0"
 | 
				
			||||||
event-listener = "2.4.0"
 | 
					event-listener = "2.4.0"
 | 
				
			||||||
async-executor = "1.1.1"
 | 
					async-executor = "1.3.0"
 | 
				
			||||||
async-channel = "1.4.2"
 | 
					async-channel = "1.4.2"
 | 
				
			||||||
num_cpus = "1"
 | 
					num_cpus = "1"
 | 
				
			||||||
 | 
				
			|||||||
@ -83,7 +83,7 @@ pub struct TaskPool {
 | 
				
			|||||||
    /// This has to be separate from TaskPoolInner because we have to create an Arc<Executor> to
 | 
					    /// This has to be separate from TaskPoolInner because we have to create an Arc<Executor> to
 | 
				
			||||||
    /// pass into the worker threads, and we must create the worker threads before we can create the
 | 
					    /// pass into the worker threads, and we must create the worker threads before we can create the
 | 
				
			||||||
    /// Vec<Task<T>> contained within TaskPoolInner
 | 
					    /// Vec<Task<T>> contained within TaskPoolInner
 | 
				
			||||||
    executor: Arc<async_executor::Executor>,
 | 
					    executor: Arc<async_executor::Executor<'static>>,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /// Inner state of the pool
 | 
					    /// Inner state of the pool
 | 
				
			||||||
    inner: Arc<TaskPoolInner>,
 | 
					    inner: Arc<TaskPoolInner>,
 | 
				
			||||||
@ -219,20 +219,13 @@ impl Default for TaskPool {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
pub struct Scope<'scope, T> {
 | 
					pub struct Scope<'scope, T> {
 | 
				
			||||||
    executor: &'scope async_executor::Executor,
 | 
					    executor: &'scope async_executor::Executor<'scope>,
 | 
				
			||||||
    spawned: Vec<async_executor::Task<T>>,
 | 
					    spawned: Vec<async_executor::Task<T>>,
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
impl<'scope, T: Send + 'static> Scope<'scope, T> {
 | 
					impl<'scope, T: Send + 'scope> Scope<'scope, T> {
 | 
				
			||||||
    pub fn spawn<Fut: Future<Output = T> + 'scope + Send>(&mut self, f: Fut) {
 | 
					    pub fn spawn<Fut: Future<Output = T> + 'scope + Send>(&mut self, f: Fut) {
 | 
				
			||||||
        // SAFETY: This function blocks until all futures complete, so we do not read/write the
 | 
					        let task = self.executor.spawn(f);
 | 
				
			||||||
        // data from futures outside of the 'scope lifetime. However, rust has no way of knowing
 | 
					 | 
				
			||||||
        // this so we must convert to 'static here to appease the compiler as it is unable to
 | 
					 | 
				
			||||||
        // validate safety.
 | 
					 | 
				
			||||||
        let fut: Pin<Box<dyn Future<Output = T> + 'scope + Send>> = Box::pin(f);
 | 
					 | 
				
			||||||
        let fut: Pin<Box<dyn Future<Output = T> + 'static + Send>> = unsafe { mem::transmute(fut) };
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
        let task = self.executor.spawn(fut);
 | 
					 | 
				
			||||||
        self.spawned.push(task);
 | 
					        self.spawned.push(task);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
		Reference in New Issue
	
	Block a user