小编Dem*_*gos的帖子

在Windows上是否有猫的替代品

我需要*.bat在Windows 上使用脚本加入两个二进制文件.

我怎样才能做到这一点?

windows scripting command-line

299
推荐指数
5
解决办法
39万
查看次数

使用Chrome 35及更高版本启用非PlayStore UserScript

自Google Chrome版本35开始,Google PlayStore外部安装的任何扩展程序的执行都会被阻止,无法通过扩展程序菜单启用.

两年前删除了非商店脚本的自动安装,但下载脚本并在扩展菜单上执行拖放操作仍允许安装,因此仍可以为Google的Chrome创建和共享脚本.但现在一切都被锁定了.

  • 是否可以手动为独立脚本添加权限?
  • 是否可以将个人网站列入白名单?
  • 还有其他解决方案吗?

我知道这个限制不适用于devcanary释放频道,但脚本的目的是让有足够知识的用户知道他们做了什么,而不强迫他们更改浏览器.本机支持支持在Chrome上相当有用(即使现在完全锁定),因此没有第三方插件(即:Tampermonkey)的解决方案更好.

谢谢

javascript google-chrome userscripts google-chrome-extension

15
推荐指数
3
解决办法
6195
查看次数

选择冲突特征实现的首选实现(使用负边界)

我正在开发一个 Rust 程序,我遇到了一个可以简化为以下情况的问题:

struct Pair<L, R> {
  left: L,
  right: R,
}

// Returns the first `u32` in the pair (only defined for pairs containing an u32)
trait GetU32 {
  fn get(&self) -> u32;
}

// This should also be used for `Pair<u32, u32>`
impl<R> GetU32 for Pair<u32, R> {
  fn get(&self) -> u32 {
    self.left
  }
}

impl<L> GetU32 for Pair<L, u32> {
  fn get(&self) -> u32 {
    self.right
  }
}

// impl GetU32 for Pair<u32, u32> {
// …
Run Code Online (Sandbox Code Playgroud)

traits rust

9
推荐指数
1
解决办法
2346
查看次数

模型范围垃圾收集的生命周期约束

我正在与一位朋友合作,为“范围内”垃圾收集器的生命周期定义一个安全的公共 API。生命周期要么过度受限,正确的代码无法编译,要么生命周期太宽松,可能允许无效行为。在尝试了多种方法之后,我们仍然无法找到正确的 API。这尤其令人沮丧,因为 Rust 的生命周期可以帮助避免这种情况下的错误,但现在它看起来很顽固。

范围垃圾收集

我正在实现一个 ActionScript 解释器并且需要一个垃圾收集器。我研究了rust-gc但它不适合我的需要。主要原因是它要求垃圾收集的值具有静态生存期,因为 GC 状态是线程局部静态变量。我需要获取到动态创建的主机对象的垃圾收集绑定。避免全局变量的另一个原因是,我更容易处理多个独立的垃圾收集范围、控制它们的内存限制或序列化它们。

作用域垃圾收集器类似于typed-arena。您可以使用它来分配值,一旦垃圾收集器被删除,它们就会全部被释放。不同之处在于,您还可以在其生命周期内触发垃圾收集,它将清理无法访问的数据(并且不限于单一类型)。

我已经实现了一个工作实现(使用范围标记和扫描GC),但该接口尚不能安全使用。

这是我想要的用法示例:

pub struct RefNamedObject<'a> {
    pub name: &'a str,
    pub other: Option<Gc<'a, GcRefCell<NamedObject<'a>>>>,
}

fn main() {
    // Initialize host settings: in our case the host object will be replaced by a string
    // In this case it lives for the duration of `main`
    let host = String::from("HostConfig");

    {
        // Create the garbage-collected scope (similar usage to `TypedArena`)
        let …
Run Code Online (Sandbox Code Playgroud)

garbage-collection lifetime rust

6
推荐指数
1
解决办法
488
查看次数

如何启用LLVM后端?

我正在使用Archlinux并使用官方软件包(使用pacman -S llvm)安装LLVM .我想将它与wasm-32后端一起使用(根据源代码提供).

但是,我的计算机上未启用此后端:

$ llc --version
LLVM (http://llvm.org/):
  LLVM version 5.0.0
  Optimized build.
  Default target: x86_64-unknown-linux-gnu
  Host CPU: skylake

  Registered Targets:
    aarch64    - AArch64 (little endian)
    aarch64_be - AArch64 (big endian)
    amdgcn     - AMD GCN GPUs
    arm        - ARM
    arm64      - ARM64 (little endian)
    armeb      - ARM (big endian)
    bpf        - BPF (host endian)
    bpfeb      - BPF (big endian)
    bpfel      - BPF (little endian)
    hexagon    - Hexagon
    lanai      - Lanai
    mips       - …
Run Code Online (Sandbox Code Playgroud)

llvm

5
推荐指数
1
解决办法
2092
查看次数

如何使用异步闭包捕获和接受引用

我试图传递一个返回Future<Output=bool>到异步函数的闭包,并将此闭包称为异步谓词(类似于异步.filter或其他高阶函数)。

该谓词接收其输入作为引用。我找到了如何为不捕获其环境的纯谓词实现它:

type BoxFuture<'a, Out> = Pin<Box<dyn Future<Output=Out> + 'a + Send>>;

////////////////////////////////////////////////////////////////////////////////
// 1 -> Closure only uses the inner argument                                  //
////////////////////////////////////////////////////////////////////////////////

/// Run the computation and check that its output is not empty
fn run1<'a>(expected: &'a [u8]) -> impl Future<Output=()> + 'a {
  async move {
    let is_ok = compute_and_check1(|b: &[u8]| Box::pin(async move {
      b.len() > 0 // Only uses the inner argument
    }));
    let is_ok1 = is_ok.await;
    dbg!(is_ok1);
  }
}

/// Compute …
Run Code Online (Sandbox Code Playgroud)

closures asynchronous lifetime rust

5
推荐指数
0
解决办法
725
查看次数