Если вам не нужен последний mysqlclient, вы можете взять здесь колесо:
http://www.lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
установите его с обычным: pip install path_to_wheel.whl
И он должен работать. Не похоже, что последняя версия mysqlclient добавляет много:
https://github.com/PyMySQL/mysqlclient-python/blob/master/HISTORY
Надеюсь, что это поможет.
Используйте std::mem::swap()
.
fn foo(a: &mut A) {
let mut my_local_var = SomeType::new();
mem::swap(&mut a.field, &mut my_local_var);
}
Или std::mem::replace()
.
fn foo(a: &mut A) {
let mut my_local_var = mem::replace(&mut a.field, SomeType::new());
}
Если ваше поле является Option
, существует специальный метод, который вы можете использовать - Option::take
:
struct A {
field: Option<SomeType>,
}
fn foo(a: &mut A) {
let old = a.field.take();
// a.field is now None, old is whatever a.field used to be
}
Реализация take
использует mem::replace
, как и , более общий ответ показывает , но он отлично обернут для вас:
pub fn take(&mut self) -> Option<T> {
mem::replace(self, None)
}
let mut my_local_var = mem::replace(&mut a.field, SomeType::new());
. Оба они точно эквивалентны. – Chris Morgan 24 November 2014 в 07:25