Сводка
Чтобы устранить эту проблему, обнаруженную во время работы локального приложения и удаленной базы данных , используйте SQL Server Configuration Manager для добавления псевдонима для удаленной базы данных.
Подробности
Недавно я столкнулся с этой проблемой при переходе с Windows 7 на ноутбук с Windows 10. Я запускал локальную среду разработки и среды выполнения, обращаясь к нашей базе данных Dev на удаленном сервере. Мы получаем доступ к базе данных Dev через настройку псевдонима сервера с помощью утилиты клиентской сети SQL Server (cliconfg.exe). Убедившись, что псевдоним был правильно настроен как в 64-битной версии 32-разрядной версии утилиты, так и в том, что сервер базы данных был доступен с нового ноутбука через SSMS, я все же получил ошибку, обнаруженную OP (а не IP-адресом OP, курс).
Для добавления псевдонима для удаленного сервера базы данных Dev необходимо было использовать диспетчер конфигурации SQL Server. Исправлены ошибки.
Ответ погрешён в сообщении об ошибке:
существует метод
blockquote>clone
, но следующие ограничения параметров не выполнялись:T : std::clone::Clone
Когда вы получаете
Clone
(и многие другие автоматически производные типы), он добавляетClone
привязку к всем родовым типам. Используяrustc -Z unstable-options --pretty=expanded
, мы можем видеть, что это делается:impl <'a, T: ::std::clone::Clone + 'a> ::std::clone::Clone for Foo<'a, T> { #[inline] fn clone(&self) -> Foo<'a, T> { match *self { Foo { t: ref __self_0_0 } => Foo{t: ::std::clone::Clone::clone(&(*__self_0_0)),}, } } }
В этом случае оценка не нужна, потому что общий тип находится за ссылкой.
На данный момент вам нужно будет реализовать
Clone
самостоятельно. Для этого есть проблема с ржавчиной, но это сравнительно редкий случай с обходным способом.
Ваш пример будет выводить Clone
без каких-либо проблем, если вы явно отметите, что T
должен реализовывать Clone
, например:
#[derive(Clone)]
struct Foo<'a, T: 'a> {
t: &'a T,
}
fn bar<'a, T: Clone>(foo: Foo<'a, T>) {
foo.clone();
}
Кажется необычным, что вы можете явно не указывать привязку, но ответ Shepmaster, похоже, предполагает, что компилятор вставляет его неявно, поэтому мое предложение функционально идентично.
T
, который реализует Clone
, но эта конкретная граница не обязана , чтобы клонировать ссылку. Если программа требует, чтобы T
был клонирован по другим причинам, это работает.
– Shepmaster
9 September 2016 в 15:55
T: ::std::clone::Clone + 'a
из вашего примера означает, что T
реализована Clone
; я не понимаю?
– Aurora0001
9 September 2016 в 15:56
Clone
на T
в структуре без проблем, и, делая это, я получаю точно такой же вывод из расширенного довольно принтера, как руководство impl
,
– Aurora0001
9 September 2016 в 16:14
Clone
без его получения. Это позволяет структуре вообще не иметь ограничений.
– Shepmaster
9 September 2016 в 16:14
#[derive]
– Stefan 1 May 2018 в 17:45