小编Suk*_*ann的帖子

何时以及为何使用 AsRef<T> 而不是 &T

AsRef 文档写入

用于进行廉价的引用到引用转换。

我明白reference-to-reference部分是什么意思cheap?我希望它与复杂性理论(大哦,等等)“便宜”无关。

例子:

struct User {
  email: String, 
  age: u8,
}

impl AsRef<User> for User {
  fn as_ref(&self) -> &User {
     &self
  }
}

fn main() {
  let user = User { email: String::from("myemail@example.com"), age: 25 };
  let user_ref = &user;
  //...
}
Run Code Online (Sandbox Code Playgroud)

什么是执行的原因AsRef为User,如果我可以随便拿一个参考&user?执行的规则是AsRef什么?

PS:我在其他论坛和文档中找不到任何可以回答这些问题的内容。

generics polymorphism traits rust parametric-polymorphism

7
推荐指数
2
解决办法
1096
查看次数

如何从 python manage.py test 调用 pytest-django?

我已经制作了名为 pytest_wrp 的自定义管理命令

所以当我打电话时

python manage.py test
Run Code Online (Sandbox Code Playgroud)

这段代码称为:

class Command(test.Command):

    def handle(self, *args, **options):
        super(Command, self).handle(*args, **options) # this calls the python manage.py test
        self.stdout.write("My code starts from here.")
        management.call_command(pytest_wrp.Command(), '--pact-files="{argument}"'.format(argument=path_to_file), '--pact-provider-name="MyService"', verbosity=0)

Run Code Online (Sandbox Code Playgroud)

基本上pytest_wrp有这样的代码:

class Command(BaseCommand):
    help = "Runs tests with Pytest"

    def add_arguments(self, parser):
        parser.add_argument("args", nargs=argparse.REMAINDER)

    def handle(self, *args, **options):
        pytest.main(list(args)) # This doesn't accept the pact args, even if you specify a "--" separator

Run Code Online (Sandbox Code Playgroud)

但这pytest并不pytest-django 意味着我传递的额外参数不会被识别,并且 pytest 无法启动测试套件。

我想传递一些测试用例的额外参数。如果有某种方法可以直接调用 pytest-django 并在代码中传递额外的参数,那将是最佳的。

django django-admin pytest pytest-django django-management-command

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

如何从 Django 管理员触发 Celery 任务?

我有一个模型叫Publication,我想在 Django Admin 中的列表视图中添加一个按钮,该按钮将允许触发 Celery 任务。

\n\n

admin.py:

\n\n
from django.contrib import admin\nfrom .models import Publication\n\n\nclass PublicationAdmin(admin.ModelAdmin):\n    change_list_template = "variants/admin_publication_list.html"\n\n    def update(self, request):\n        # trigger task\n        # redirect to admin list\n\nadmin.site.register(Publication, PublicationAdmin)\n
Run Code Online (Sandbox Code Playgroud)\n\n

variants/admin_publication_list.html:

\n\n
{% extends \'admin/change_list.html\' %}\n\n{% block object-tools %}\n  <li>\n    <a href="/admin/variants/publication/update/">\n      Update\n    </a>\n  </li>\n  {{ block.super }}\n{% endblock %}\n
Run Code Online (Sandbox Code Playgroud)\n\n

但是,当我按下按钮时,我只会收到通知:

\n\n
\n

ID 为 \xe2\x80\x9cupdate\xe2\x80\x9d 的发布不存在\xe2\x80\x99。也许它被删除了?

\n
\n

django django-admin celery

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

haskell 如何以 head 函数的模式打破列表

在学习 haskell 时,我无法理解 haskell 如何自动匹配提取列表头部的模式。

head' :: [a] -> a  
head' [] = error "Can't find head in an Empty list!" 
-- How does haskell break the list into x(first) and xs(rest)? 
head' (x:xs) = x
Run Code Online (Sandbox Code Playgroud)

我读过这[1,2,3]是1:2:3:[]. 那么:是一个接受任何参数并添加到右手参数的函数吗?列表是如何向后分解成两个变量 head 和 rest 的? [1,2,3] --> (x:xs)??

colon_operator :: a -> [a]
-- not sure how the function would look
Run Code Online (Sandbox Code Playgroud)

对不起,如果我不能简洁地解释我的问题,我在 haskell 方面并不是那么好。

haskell pattern-matching

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