Уничтожьте некоторые процессы .exe именем файла

Дженерики не легки. Дженерики в такой универсальной системе, как Diesel, еще сложнее.

Я предпочитаю разбивать ступени на очень мелких деталей и избегать как можно большего количества цепочек. С этим в игре вам нужно будет добавить границы черт для каждого шага. Хорошая вещь - использовать / создавать псевдонимы типов для очень сложных границ признаков. Diesel предоставляет несколько таких , и вы можете сделать свой собственный для своих особых целей.

Хотя я смотрел на сгенерированные сообщения об ошибках, я в основном смотрел на границы типов, описываемые вызываемыми функциями / методами.

По точкам:

  1. .find происходит от FindDsl .
  2. delete требуется IntoUpdateTarget .
  3. Результирующий тип вызова delete - это DeleteStatement , параметризованный с помощью T::Table и T::WhereClause. Это псевдоним пользовательского типа DeleteFindStatement.
  4. .execute происходит от ExecuteDsl .
use diesel::{
    associations::HasTable,
    helper_types::Find,
    query_builder::{DeleteStatement, IntoUpdateTarget},
    query_dsl::methods::ExecuteDsl,
};

type DeleteFindStatement =
    DeleteStatement<::Table, ::WhereClause>;

impl DB {
    pub fn remove_row(&self, table: Tbl, pk: Pk) -> Result<(), Box>
    where
        Tbl: FindDsl,
        Find: IntoUpdateTarget,
        DeleteFindStatement>: ExecuteDsl,
    {
        let find = table.find(pk);
        let delete = diesel::delete(find);
        delete.execute(&self.conn)?;
        Ok(())
    }
}

Вам нужно будет попробовать его самостоятельно для версии filter, так как вы не предоставили достаточно кода, чтобы сказать, каким должен быть id; как показано в вашем сообщении об ошибке.

См. Также:

Есть ли преимущество в том, что первичный ключ является универсальным, даже если он &str во всех случаях?

blockquote>

Для меня проще использовать универсальный тип, чем вставить набор общих параметров времени жизни.

114
задан Banee Ishaque K 13 February 2018 в 05:39
поделиться

3 ответа

Быстрый ответ:

foreach (var process in Process.GetProcessesByName("whatever"))
{
    process.Kill();
}

(оставьте .exe в имени процесса)

220
ответ дан 24 November 2019 в 02:32
поделиться

Можно Уничтожить определенный экземпляр MS Word.

foreach (var process in Process.GetProcessesByName("WINWORD"))
{
    // Temp is a document which you need to kill.
    if (process.MainWindowTitle.Contains("Temp")) 
        process.Kill();
}
0
ответ дан 24 November 2019 в 02:32
поделиться

Вы можете использовать Process.GetProcesses() для получения текущих запущенных процессов, затем Process.Kill() для уничтожения процесса.

14
ответ дан 24 November 2019 в 02:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: