Android: программно определить, подключено ли устройство к сенсорному экрану

Вышеприведенный код не работает, и понятно, что перемещение значения из self нарушает целостность.

Это не совсем то, что здесь происходит. Например, то же самое с self будет работать красиво:

impl Foo {
    fn switch(self) {
        self = match self {
            Foo::Bar(val) => Foo::Baz(val),
            Foo::Baz(val) => Foo::Bar(val),
        }
    }
}

Ржавчина абсолютно прекрасна с частичным и полным ходом. Проблема здесь в том, что вы не владеете значением, которое вы пытаетесь переместить - у вас есть только изменяемая заимствованная ссылка. Вы не можете отойти от каких-либо ссылок, в том числе изменчивых.

Это на самом деле одна из часто запрашиваемых функций - особый вид ссылки, который позволил бы выйти из него. Это позволило бы использовать несколько видов полезных шаблонов. Здесь вы можете найти здесь здесь и . .

Тем временем для некоторых случаев вы можете использовать std::mem::replace и std::mem::swap . Эти функции позволяют «взять» значение из изменяемой ссылки, если вы дадите что-то взамен.

21
задан Gabriele Ciech 31 August 2016 в 07:58
поделиться