小编Jac*_*ang的帖子

属于特征的对象传染媒介

请考虑以下代码:

trait Animal {
    fn make_sound(&self) -> String;
}

struct Cat;
impl Animal for Cat {
    fn make_sound(&self) -> String {
        "meow".to_string()
    }
}

struct Dog;
impl Animal for Dog {
    fn make_sound(&self) -> String {
        "woof".to_string()
    }
}

fn main () {
    let dog: Dog = Dog;
    let cat: Cat = Cat;
    let v: Vec<Animal> = Vec::new();
    v.push(cat);
    v.push(dog);
    for animal in v.iter() {
        println!("{}", animal.make_sound());
    }
}
Run Code Online (Sandbox Code Playgroud)

编译器告诉我这vAnimal我尝试推送时的向量cat(类型不匹配)

那么,我如何制作属于特征的对象向量并在每个元素上调用相应的特征方法呢?

polymorphism rust

52
推荐指数
3
解决办法
1万
查看次数

Silver Searcher - 如何忽略文件

根据文档,它应该是

--ignore PATTERN
Run Code Online (Sandbox Code Playgroud)

我有一个包含标签的文件,名为"tags".我尝试了以下内容,每个人仍在搜索标记文件.

ag -Qt --ignore ".*tags" "asdf"

ag -Qt --ignore .*tags "asdf"

ag -Qt --ignore "tags" "asdf"

ag -Qt --ignore tags "asdf"

ag -Qt --ignore *tags
Run Code Online (Sandbox Code Playgroud)

并且它们都不起作用.

如果我使用这里建议的内容,则ag根本不接受它

我尝试通过将其重命名为temp.tags并使用*.tags模式尝试忽略它来解决它,但它仍然无效.

有任何想法吗?

powershell cmd ag

32
推荐指数
5
解决办法
9870
查看次数

Subprocess.call或Subprocess.Popen不能使用PATH中的可执行文件(Linux/Windows)

我正在编写一个需要在Linux和Windows上运行的程序,并使用路径中存在的可执行文件(带参数).(假定)

目前,我在使用Subprocess.Call和Subprocess.Popen在Windows中运行可执行文件时遇到问题.

对于像这样的代码,在Windows 8中

def makeBlastDB(inFile, inputType, dbType, title, outDir):
    strProg = 'makeblastdb'
    strInput = '-in ' + inFile
    strInputType = '-input_type ' + inputType
    strDBType = '-dbtype ' + dbType
    strTitle = '-title ' + title
    strOut = '-out ' + os.path.join(os.sep, outDir, title)
    cmd = [strProg, strInput, strInputType, strDBType, strTitle, strOut]
    result = Popen(cmd, shell=True)
Run Code Online (Sandbox Code Playgroud)

我在控制台中收到错误消息

'makeblastdb' is not recognized as an internal or external command,
operable program or batch file.
Run Code Online (Sandbox Code Playgroud)

即使我可以使用cmd.exe运行相同的命令,我得到相同的响应shell = False.

假设可执行文件在PATH环境变量中,我是如何运行命令的任何想法?谢谢

python windows shell subprocess

13
推荐指数
3
解决办法
2万
查看次数

NixOS:在configuration.nix中设置默认通道

如何在NixOS中设置默认频道/etc/configuration.nix

有一个命令来设置它并重建

sudo nix-channel --add https://nixos.org/channels/nixpkgs-unstable
sudo nixos-rebuild switch -I nixpkgs=/nix/var/nix/profiles/per-user/root/channels/nixpkgs
Run Code Online (Sandbox Code Playgroud)

但我想在configuration.nix中设置它,所以我不必记住每次都这样做.谢谢!

nixos nix

11
推荐指数
2
解决办法
4251
查看次数

管道 - 管道内的多个输出文件

我正在编写一个程序,其中输入文件被分成多个文件(Shamir的秘密共享方案).

这是我想象的管道:

  • source:使用Conduit.Binary.sourceFile从输入中读取
  • conduit:采用ByteString,生成[ByteString]
  • sink:从管道中获取[ByteString],并将每个ByteString(在[ByteString]中)写入相应的文件.(如果我们的输入[ByteString]被称为bsl,那么bsl !! 0将被写入文件0,bsl !! 1文件1等等)

我在这里找到了一个关于多个输入文件的问题,但在他们的情况下,整个管道对于每个输入文件运行一次,而对于我的程序,我正在写入管道的多个输出文件.

我也在查看此处的Conduit源代码,看看我是否可以自己实现multiSinkFile,但是我对sinkFile的Consumer类型稍微感到困惑,如果我试图深入挖掘更多......(我是还是个初学者)

所以,问题是,我应该如何实现像multiSinkFile这样的函数,它允许将多个文件作为接收器的一部分写入?

任何提示表示赞赏!

澄清

假设我们想要在包含二进制值"ABCDEF"的文件中共享Shamir的秘密(分为3部分).

(所以我们有输入文件srcFile和输出文件outFile0,outFile1并且outFile2)

我们首先从文件中读取"ABC",并进行处理,这将给我们一个列表,比如说["133", "426", "765"].所以"133"将被写入outFile0,"426"outFile1"765"outFile2.然后我们读取"DEF" srcFile,对其进行处理,并将相应的输出写入每个输出文件.

编辑:

谢谢您的回答.我花了一些时间来了解ZipSinks等会发生什么,我编写了一个简单的测试程序,它接受源文件的输入并简单地将其写入3个输出文件.希望这将有助于其他人.

{-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE OverloadedStrings #-}
import ClassyPrelude.Conduit 
import Safe (atMay)
import Text.Printf
import …
Run Code Online (Sandbox Code Playgroud)

haskell conduit

8
推荐指数
2
解决办法
739
查看次数

创建测试套件时出错:"无法满足-package-id"

我正在尝试HaskSplit在我的.cabal配置中为我的项目创建一个测试套件:

-- Initial HaskSplit.cabal generated by cabal init.  For further 
-- documentation, see http://haskell.org/cabal/users-guide/

name:                HaskSplit
version:             0.1.0.0
synopsis:            Haskell Implementation of Shamir's Secret Sharing Scheme
-- description:         
license:             MIT
license-file:        LICENSE
author:              
maintainer:          
-- copyright:           
category:            Security
build-type:          Simple
-- extra-source-files:  
cabal-version:       >=1.10

executable HaskSplit
  main-is:             Main.hs
  default-language:    Haskell2010
  -- other-modules:       
  other-extensions:    TemplateHaskell, NoImplicitPrelude, RankNTypes, OverloadedStrings
  build-depends:       base >=4.6 && <4.7,
                       resourcet >=1.1 && <1.2,
                       bytestring >=0.10 && <0.11,
                       conduit-extra >=1.1 && <1.2,
                       vector >=0.10 && <0.11, …
Run Code Online (Sandbox Code Playgroud)

haskell cabal

8
推荐指数
1
解决办法
1331
查看次数

无形-副产品中的重复数据删除类型

鉴于我有一种类型Int :+: Int :+: String :+: CNil,是否有简单的方法可以将其转换为Int :+: String :+: CNil

generics scala shapeless

8
推荐指数
2
解决办法
262
查看次数

获取 Nu shell 中的当前脚本位置

在 bash 中,您可以使用$0变量来获取当前脚本的位置。我如何在 Nu 中做同样的事情?echo $nu似乎没有什么我可以使用的。

shell nushell

8
推荐指数
1
解决办法
1003
查看次数

如何通过枚举变体"切换"?

我想写一个函数,它将提供的值切换/切换到枚举中的下一个并在结尾处回绕:

enum Direction { NORTH, SOUTH, EAST, WEST }
Run Code Online (Sandbox Code Playgroud)

例如,NORTH=> SOUTH,SOUTH=> EAST,EAST=> WEST,WEST=> NORTH.

有没有比In Rust中描述的手动创建静态数组更简单的方法,有没有办法迭代枚举的值?

use Direction::*;
static DIRECTIONS: [Direction; 4] = [NORTH, SOUTH, EAST, WEST];
Run Code Online (Sandbox Code Playgroud)

是不是枚举假设是"枚举"?我依稀记得在Rust之前看过一个例子,但我似乎无法找到它.由于Rust枚举更像是工会/变体,我想这会让事情复杂化.

rust

7
推荐指数
3
解决办法
1207
查看次数

CMake“clang++ 无法编译一个简单的测试程序”(Fedora 20)

所以我尝试安装 clang + cmake 来编译一个简单的 C++ 程序,但出现以下错误:

-- The C compiler identification is GNU 4.8.3
-- The CXX compiler identification is Clang 3.5.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/local/bin/clang++
-- Check for working CXX compiler: /usr/local/bin/clang++ -- broken
CMake Error at /usr/share/cmake/Modules/CMakeTestCXXCompiler.cmake:54 (message):
  The C++ compiler "/usr/local/bin/clang++" is not …
Run Code Online (Sandbox Code Playgroud)

c++ fedora cmake clang

7
推荐指数
1
解决办法
1万
查看次数